求大佬捉虫

P2820 局域网

@[宇佐见堇子](/space/show?uid=79011) 帮你改了一下::: ``` #include<iostream> #include<algorithm> using namespace std; int n,m,sum,ans,tot,f[20005]; struct node { int u,v,w; }a[20005]; bool cmp(node a,node b) { return a.w<b.w; } int getf(int x) { return (f[x]==x?x:f[x]=getf(f[x])); } bool merge(int x,int y) { if(getf(x)!=getf(y)) { f[getf(y)]=getf(x); return true; } return false; } int main() { cin>>n>>m; for(int i=1;i<=m;i++) { cin>>a[i].u>>a[i].v>>a[i].w; tot+=a[i].w; } for(int i=1;i<=n;i++) f[i]=i; sort(a+1,a+1+m,cmp); for(int i=1;i<=m;i++) { if(merge(a[i].u,a[i].v)) { sum++; ans+=a[i].w; } if(sum==n) break; } cout<<tot-ans<<endl; return 0; } ```
by 有朋自远方来 @ 2019-07-14 08:49:21


在这儿错了:::sort(a+1,a+1+m,cmp);
by 有朋自远方来 @ 2019-07-14 08:49:49


并查集里面不只有一个元素,所以合并的时候计数不能简单地sum++。
by xo_永夜_ox @ 2019-07-14 09:00:41


@[有朋自远方来](/space/show?uid=87197) 额,,果然99%的错误都是**错误。。。
by Ophelia @ 2019-07-14 09:13:25


@[宇佐见堇子](/space/show?uid=79011) 有时这样一个错误要调好几个小时
by 有朋自远方来 @ 2019-07-14 09:18:05


|