Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34775 武云帆 【S】T2 C++ 运行出错 0 0 MS 264 KB 1898 2024-11-14 15:11:26

Tests(0/10):


#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(){ freopen("logistics.in","r",stdin); freopen("logistics.out","w",stdout); 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<<"\n"; 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<<"\n"; } }


测评信息: