#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=101;
struct node
{
int x,y,value;
}edge[maxn*maxn];
int fa[maxn];
int k;
int find(int x)
{
return x==fa[x]?x:find(fa[x]);
}
bool cmp(const node a,const node b)
{
return a.value<b.value;
}
int main()
{
int n;
int i,j;
while(cin>>n)
{
for(i=0;i<n;i++)
fa[i]=i;
k=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
edge[k].x=i;
edge[k].y=j;
cin>>edge[k].value;
k++;
}
}
sort(edge,edge+k,cmp);
int ans=0;
for(i=0;i<k;i++)
{
if(edge[i].x==0&&edge[i].y==2)
int x1=0;
int x1=find(edge[i].x);
int x2=find(edge[i].y);
if(x1!=x2)
{
fa[x1]=x2;
ans+=edge[i].value;
}
}
cout<<ans<<endl;
}
}
J - Agri-Net
最新推荐文章于 2019-08-10 12:02:48 发布