P1546 最短网络 Agri-Net

最小生成树模板。

注意输入的不同,还有数组开大。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;

int n,x,t,ans;
int fa[102*102];

struct node{
	int u,v,w;
}e[102*102];

bool cmp(node x,node y)
{
	return x.w <y.w ;
} 

int find(int x)
{
	if(fa[x]==x) return x;
	else return fa[x]=find(fa[x]);
}

int main()
{
	//freopen("2.in","r",stdin);
	//freopen("2.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
		fa[i]=i;
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
		{
			scanf("%d",&x);
			if(i!=j)
			{
				t++;
				e[t].u =i;
				e[t].v =j;
				e[t].w =x;
			}
		}
	sort(e+1,e+t+1,cmp);
	for(int i=1;i<=t;++i)
	{
		int dx=find(e[i].u );
		int dy=find(e[i].v );
		if(dx==dy) continue;
		ans+=e[i].w ;
		fa[dx]=dy;
	}	
	printf("%d",ans);
	return 0;
}

如果你不开心,那我就把右边这个帅傻子分享给你吧,   

你看,他这么好看,那么深情的望着你,你还伤心吗?   

真的!这照片盯上他五秒钟就想笑了。   

一切都会过去的。  

posted @ 2018-10-22 19:46  孟东行#  阅读(128)  评论(0编辑  收藏  举报