Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
34772 | 武云帆 | 【S】T2 | C++ | 运行超时 | 50 | 1000 MS | 105852 KB | 1904 | 2024-11-14 15:05:54 |
#include<bits/stdc++.h> using namespace std; #define int long long int n,q,idx; const int N=3010; int f[N]; struct node{ int x,y; }a[N]; struct node2{ int i,j; long long d; }b[N*1500],c[N]; bool cmp(node2 x,node2 y){ return x.d<y.d; } int find(int x){ if(f[x]!=x) f[x]=find(f[x]); return f[x]; } signed main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>q; //cout<<"###"; for(int i=1;i<=n;i++){ f[i]=i; cin>>a[i].x>>a[i].y; for(int j=1;j<i;j++){ b[++idx].i=j; b[idx].j=i; b[idx].d=abs(a[i].x-a[j].x)*abs(a[i].x-a[j].x)*abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y)*abs(a[i].y-a[j].y)*abs(a[i].y-a[j].y); } } sort(b+1,b+1+idx,cmp); //cout<<"!!!"; int k=1; long long ans=0; for(int i=1;i<=idx&&k<n;i++){ int x=find(b[i].i); int y=find(b[i].j); if(x!=y){ f[x]=y; ans+=b[i].d; c[k].i=b[i].i; c[k].j=b[i].j; c[k].d=b[i].d; k++; } } cout<<ans<<endl; if(q==0){ return 0; } for(int i=1;i<=q;i++){ int x,y,z; cin>>x>>y>>z; c[k].i=x; c[k].j=y; c[k].d=z; sort(c+1,c+1+k,cmp); for(int j=1;j<=n;j++){ b[j].d=c[j].d; b[j].i=c[j].i; b[j].j=c[j].j; f[j]=j; } k=1;ans=0; for(int j=1;j<=n&&k<n;j++){ int x=find(b[j].i); int y=find(b[j].j); if(x!=y){ f[x]=y; ans+=b[j].d; c[k].i=b[j].i; c[k].j=b[j].j; c[k].d=b[j].d; k++; } } cout<<ans<<endl; } cout.flush(); }