标签:com 并查集 scan c++ sort nod += color for
https://www.luogu.com.cn/problem/P1546
#include<bits/stdc++.h> #define N 1000 using namespace std; struct node{ int x,y,w; bool const < (node &o){ return w < o.w; } }a[N]; int f[N]; int find(int x){ if(x==f[x]) return x; return f[x]=find(f[x]); } int main(){ int n,k,m=0; scanf("%d",&n); for(int i=1;i<=n;i++){ f[i]=i; for(int j=1;j<=n;j++) { scanf("%d",&k); if(j>i){ m++; a[m].x=i;a[m].y=j;a[m].w=k; } } } sort(a+1,a+m+1 );//排序 int ans=0,p=1; for(int i=1;i<=m;i++){ if(find(a[i].x)!=find(a[i].y)){ //如果不在一个集合 ans+=a[i].w; f[find(a[i].x)]=a[i].y; //合并两个节点 p++; if(p==n) break; } } cout<<ans; return 0; }
标签:com 并查集 scan c++ sort nod += color for
原文地址:https://www.cnblogs.com/SunChuangYu/p/12417150.html