首页 > 其他分享 >继续畅通工程

继续畅通工程

时间:2023-04-20 18:06:17浏览次数:24  
标签:return 工程 int sum 110 zz 畅通 继续 include


继续畅通工程


Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17820    Accepted Submission(s): 7671



Problem Description


省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。


 



Input


测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 1< N < 100 );随后的 N(N-1)/2 行对应村庄间道路的成本及修建状态,每行给4个正整数,分别是两个村庄的编号(从1编号到N),此两村庄间道路的成本,以及修建状态:1表示已建,0表示未建。

当N为0时输入结束。


 



Output


每个测试用例的输出占一行,输出全省畅通需要的最低成本。


 



Sample Input


3
1 2 1 0
1 3 2 0
2 3 4 0
3
1 2 1 0
1 3 2 0
2 3 4 1
3
1 2 1 0
1 3 2 1
2 3 4 1
0

 



Sample Output


3 1 0


/*用克鲁斯卡尔算法*/


/*方法一*/
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[110];
int sum;
struct zz
{
	int c1,c2,l;
}q[11000];
int cmp(zz x,zz y)
{
	return x.l<y.l;
}
int find(int x)
{
	while(x!=a[x])
		x=a[x];
	return x;
}
int marge(int x,int y,int l)
{
	int fx,fy;
	fx=find(x);fy=find(y);
	if(fx!=fy)
	{
		sum+=l;
		a[fx]=fy;
	}
}
int main(){
	int n,m,i,j,l,z;
	while(scanf("%d",&n),n)
	{
		sum=0;
		for(i=1;i<=n;i++)
			a[i]=i;
		m=n*(n-1)/2;
		for(i=1;i<=m;i++)
		{
			scanf("%d%d%d%d",&q[i].c1,&q[i].c2,&l,&z);
			if(z==0)
				q[i].l=l;
			else
				q[i].l=0;
		}
		sort(q+1,q+m+1,cmp);//因为i是从1开始的,此块要加1. 
		for(i=1;i<=m;i++)
			marge(q[i].c1,q[i].c2,q[i].l);
			printf("%d\n",sum);
	}
	return 0;
}
/*方法二*/
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[110];
int sum;
struct zz
{
	int c1,c2,l,z;
}q[11000];
int cmp(zz x,zz y)
{
	if(x.z==y.z)
		return x.l<y.l;
	return x.z>y.z;
}
int find(int x)
{
	while(x!=a[x])
		x=a[x];
	return x;
}
int marge(int x,int y,int l,int z)
{
	int fx,fy;
	fx=find(x);fy=find(y);
	if(fx!=fy)
	{
		if(z==0)
			sum+=l;
		else
			sum+=0;
		a[fx]=fy;
	}
}
int main(){
	int n,m,i,j,l,z;
	while(scanf("%d",&n),n)
	{
		sum=0;
		for(i=1;i<=n;i++)
			a[i]=i;
		m=n*(n-1)/2;
		for(i=1;i<=m;i++)
			scanf("%d%d%d%d",&q[i].c1,&q[i].c2,&q[i].l,&q[i].z);			
		sort(q+1,q+m+1,cmp);
		for(i=1;i<=m;i++)
			marge(q[i].c1,q[i].c2,q[i].l,q[i].z);
			printf("%d\n",sum);
	}
	return 0;
}
/*用prim算法*/
#include<stdio.h>
#include<string.h>
#include<math.h>
#define mx 0x3f3f3f
int n,m;
int g[110][110];
void prim()
{
	int i,j,k,v,min,sum=0;
	int dis[110],vis[110];
	memset(vis,0,sizeof(vis));
	for(i=1;i<=n;i++)
	{
		dis[i]=g[1][i];
	}
	dis[1]=0;
	vis[1]=1;
	for(v=1;v<n;v++)
	{
		min=mx;
		k=1;
		for(i=1;i<=n;i++)
		{
			if(!vis[i]&&dis[i]<min)
			{
				min=dis[i];
				k=i;
			}
		}
		vis[k]=1;
		sum+=min;
		for(i=1;i<=n;i++)
		{
			if(!vis[i]&&dis[i]>g[k][i])
			dis[i]=g[k][i];
		}
	}
	printf("%d\n",sum);
}
int main(){
	int i,j,k,l;
	while(scanf("%d",&n),n)
	{
		m=n*(n-1)/2;
		while(m--)
		{
			scanf("%d%d%d%d",&i,&j,&l,&k);
			if(k==0)
				g[i][j]=g[j][i]=l;
			else
				g[i][j]=g[j][i]=0;
		}
		prim();
	}
	return 0;
}



标签:return,工程,int,sum,110,zz,畅通,继续,include
From: https://blog.51cto.com/u_16079508/6210095

相关文章

  • 软考中级(系统集成项目管理工程师)高频考点
    根据近几年的软考中级(系统集成项目管理工程师)考试真题分析来看,发现有一些经常考的知识点。小编今天就来为大家分享其中的一个高频考点:项目进度管理,希望对大家备考有所帮助。1、前导图法(单代号网络图),也叫紧前关系绘图法。有四种关系:FS、FF、SS、SF。2、箭线图法(双代号网络图),虚箭线表......
  • 怎么备考DAMA-CDGA数据治理工程师认证考试?
    目前,越来越多的企业已开始把DAMA证书作为数据治理岗位招聘优先录取的一项内容,也有很大一部分企业鼓励在职的数据治理人员去考取DAMA证书,从中可以看出企业对数据治理岗位的要求越来越高,越来越规范化,国内多个知名互联网企业更是高薪大量聘请数据治理岗位,静等有能力居之,当然有DAMA证书......
  • 2023年3月北京/广州/杭州/深圳数据治理工程师认证DAMA-CDGA/CDGP
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是全球唯一数据管理方面权威性认证,帮助......
  • 【获奖案例巡展】信创先锋之星——云上贵州信创工程中心大数据中台
    为表彰使用大数据、人工智能等基础软件为企业、行业或世界做出杰出贡献和巨大创新的标杆项目,星环科技自2021年推出了“新科技星力量”星环科技科技实践案例评选活动,旨在为各行业提供更多的优秀产品案例,彰显技术改变世界的力量,目前已成功举办两届,收到了来自各界的积极参与。 ......
  • 一招解决由于找不到msvcp120.dll,无法继续执行代码的方法
    msvcp120.dll是vs2010编译的程序默认的库文件。msvcp120.dll可以解决电脑软件或某些大型游戏、程序由于vs2010编译系统中缺失此dll的问题。vs2010编写的程序运行所需dll。下载msvcp120.dll文件打开电脑随便一个浏览器顶部网页输入 【 dll修复程序.site 】进入后点击开始下载dl......
  • 软考中级(系统集成项目管理工程师)高频考点-群体决策
    软考中级(系统集成项目管理工程师)高频考点-群体决策群体决策就是为达成某种期望结果而对多个未来行动方案进行评估。群体决策技术可用来开发产品需求,以及对产品需求进行归类和优先排序。一致同意所有人都同意某个行动方案。大多数原则获得群体中50%以上的人的支持,就能做出......
  • 系统集成项目管理工程师(软考中级)怎么备考?
    系统集成项目管理工程师(软考中级)怎么备考?系统集成项目管理工程师是我国计算机技术与软件专业技术资格(水平)考试之一,属于中级资格考试,通过考试拿到证之后相当于有了中级职称资格。系统集成项目管理工程师考试报名没有学历和专业限制,如果是想通过考证来入户,是不二之选。那该如......
  • 2023-04-19:给定一个非负数组arr 任何两个数差值的绝对值,如果arr中没有,都要加入到arr里
    2023-04-19:给定一个非负数组arr任何两个数差值的绝对值,如果arr中没有,都要加入到arr里然后新的arr继续,任何两个数差值的绝对值,如果arr中没有,都要加入到arr里一直到arr大小固定。请问最终arr长度是多少。1<=arr的长度<=10^50<=arr的数值<=10^5来自国外题目论坛。答......
  • 从4k到42k,软件测试工程师的涨薪史,给我看哭了
      清明节一过,盲猜大家已经无心上班,在数着日子准备过五一,但一想到银行卡里的余额……瞬间心情就不美丽了。最近,2023年高校毕业生就业调查显示,本科毕业月平均起薪为5825元。调查一出,便有很多同学表示自己又被平均了。看着这一数据,不免让人想到前不久中国青年报的一项调......
  • 工程师文化
    工程师文化 ---企业的核心人才不应是这些指点江山的指挥者,而是脚踏实地的实践者,是那些动手去做的工程师,并且是那些习惯于马上去做的人 ---足够小的团队 ---工程师必须能够直接和客户接触,否则主人翁意识无从谈起。这也是为什么大部分工程师文化的公司都是互联网公司,因为互联网产......