为什么?
查看原帖
为什么?
133034
BetrayalObedience楼主2022/7/19 14:39

1``` #include #include #include #include using namespace std; int n,m,k,f[10000001]; struct node{ int u,v,w; }a[10000001]; bool cmp(node a,node b) { return a.w>b.w; } int find(int x) { if(f[x]==x) return x; return f[x]=find(f[x]); } int main() { cin>>n>>m>>k; for(int i=1;i<=m;i++) { cin>>a[i].u>>a[i].v>>a[i].w; } int cnt=0,ans=0; sort(a+1,a+m+1,cmp); for(int i=1;i<=n;i++) f[i]=i; for(int i=1;i<=m;i++) { int fx=find(a[i].u),fy=find(a[i].v); if(fx!=fy) { f[fx]=fy; cnt++; ans+=a[i].w; } if(cnt==k-1) { cout<<ans; return 0; } } }

写出正解了,就是想问一下为啥不会输出闭环的情况,如样例输入后为何不会输出26,即选择1,2,3条地毯
2022/7/19 14:39
加载中...