zoj 2966 Build The Electric System(MST)

原创 2012年03月29日 20:13:02

没想到省赛题目会有这么裸的算法题。kruskal水过

 

#include<stdio.h>
#include<stdlib.h>
#define MAXM 62255
#define MAXN 505
typedef struct  edge{
	int u,v,w;
}edge;
edge edges[MAXM];
int parent[MAXN];
int n,m;
int i,j;
void UFset()//初始化
{
	for(i=0;i<=n;i++)
		parent[i]=-1;
}
int find(int x)//返回x的根节点s
{
	int s;
	for(s=x;parent[s]>=0;s=parent[s]);
	while(s!=x)//优化:压缩路径
	{
		int tmp=parent[x];
		parent[x]=s;
		x=tmp;
	}
	return s;
}
void Union(int R1,int R2)
{
	int r1=find(R1),r2=find(R2);
	int tmp=parent[r1]+parent[r2];
	if(parent[r1]>parent[r2])//优化:加权--把结点少的加到结点多的一边
	{
		parent[r1]=r2;
		parent[r2]=tmp;
	}
	else 
	{
		parent[r2]=r1;
		parent[r1]=tmp;
	}
}
int cmp(const void *a,const void *b)
{
	edge aa=*(const edge *)a;
	edge bb=*(const edge *)b;
	return aa.w-bb.w;
}
void Kruskal()
{
	int sumweight=0;//生成树的权值;
	int num=0;//已选用的变得数目
	int u,v;
	UFset();
	for(i=0;i<m;i++)
	{
		u=edges[i].u;v=edges[i].v;
		if(find(u)!=find(v))//不是同一个连通分量
		{
	//		printf("%d %d %d\n",u,v,edges[i].w);
			sumweight+=edges[i].w;num++;
			Union(u,v);
		}
		if(num>n-1) break;
	}
	printf("%d\n",sumweight);
}

int main()
{
	int T;
	int a,b,c;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d",&n,&m);
		for(i=0;i<m;i++)
		{
			scanf("%d%d%d",&a,&b,&c);
			edges[i].u=a;
			edges[i].v=b;
			edges[i].w=c;
		}
		qsort(edges,m,sizeof(edges[0]),cmp);
		Kruskal();
	}
	//system("pause");
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

zoj 2966 Build The Electric System(MST)

没想到省赛题目会有这么裸的算法题。kruskal水过   #include #include #define MAXM 62255 #define MAXN 505 typedef str...
  • cqlf__
  • cqlf__
  • 2012-03-29 20:13
  • 1017

ZOJ 2966 Build The Electric System MST

题意抽象一下:初始:一个图中有几个连通分支 。你可以连通任意两个点。求在满足使这个图成为连通图的前提下,使你所连的两点间的边的sum(权值)最小。解题思路:这个很容易让人想到Kruskal算法中,构造...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

zoj 2966 Build The Electric System

Build The Electric System Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Jav...

ZOJ 2966 Build The Electric System

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2966 Build The Electric System ...

zoj 2966 Build The Electric System(并查集)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2966 转载请注明出处:http://blog.csdn.net/...

ZOJ 1965 Build The Electric System

浙江大学OJ果然难一些,数据更加严格啊!在杭电上写的一些AC的程序在这里就是WA,以后编程一定要多注意细节,细节决定成败。加油!!! In last winter, there was a big ...

ZOJ 2966 Build The Electric System 最小生成树

ZOJ 2966 Build The Electric System 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemC...

Build The Electric System

Build The Electric System In last winter, there was a big snow storm in South China. The electr...

ZOJ-2966-Build The Electric System【5th浙江省赛】【最小生成树】

ZOJ-2966-Build The Electric System

ZOJ 2966 Build The Electric System【最小生成树】

//2632030 2011-08-18 16:57:56 Accepted 2966 C++ 0 1652 ylwh@Unknown #include #include #incl...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)