题解
最短网络
1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int f[105]; struct node{ int x,y,len; }; node a[100005]; int n,t,k=0; bool cmp(node n1,node n2){ return n1.len<n2.len; } int find(int x){ return x==f[x]?x:f[x]=find(f[x]); } int main(){ cin>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>t; if(i<j){ k++; a[k].x=i; a[k].y=j; a[k].len=t; } } } sort(a+1,a+k+1,cmp); for(int i=1;i<=n;i++){ f[i]=i; } int s=0; int c=0; for(int i=1;i<=k;i++){ int fx=find(a[i].x); int fy=find(a[i].y); if(fx!=fy){ f[fx]=fy; c++; s=s+a[i].len; } if(c==n-1){ cout<<s; break; } }return 0; }
- 1