题目1024:畅通工程

题目1024:畅通工程题目 1024 畅通工程时间限制 1 秒内存限制 32 兆特殊判题 否提交 1639 解决 522 题目描述 省政府 畅通工程 的目标是使全省任何两个村庄间都可以实现公路交通 但不一定有直接的公路相连 只要能间接通过公路可达即可

大家好,欢迎来到IT知识分享网。题目1024:畅通工程

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:1639

解决:522

题目描述:

    省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。
输入:

    测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M (N, M < =100 );随后的 N 行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
输出:

    对每个测试用例,在1行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出“?”。
样例输入:

3 3 1 2 1 1 3 2 2 3 4 1 3 2 3 2 0 100
样例输出:

3 ?
#include"iostream" #include"string.h" using namespace std; int min=; int i,j,n,m,ans=0,coco; int point[100][100]; int a[100]; int visited[100]; int prim(int m) { int pos=1; visited[1]=1; for(i=2;i<=m;i++) { a[i]=point[pos][i]; } for(i=1;i<=m;i++) { min=; for(j=1;j<=m;j++) { if(a[j]<=min&&visited[j]==0) { min=a[j]; coco=j; } } if(pos!=coco) { ans+=min; pos=coco; visited[pos]=1; } for(j=1;j<=m;j++) { if(a[j]>point[pos][j]&&visited[j]==0) a[j]=point[pos][j]; } } return ans; } void main() { int m,n; int a,b; int d; while(cin>>n) { cin>>m; if(n==0) break; for(i=1;i<=100;i++) { for(j=1;j<=100;j++) { point[i][j]=; } } memset(visited,0,sizeof(visited)); for(i=0;i<n;i++) { cin>>a>>b; cin>>point[a][b]; point[b][a]=point[a][b]; } d=prim(m); if(d>=) printf("?\n"); else printf("%d\n",d); } } 

太依赖自己脑中对以前记过的Prim算法印象去写 没怎么思考搞了半天 改到应该差不多了还是过不了 郁闷啊

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/155761.html

(0)
上一篇 2025-02-17 14:45
下一篇 2025-02-17 15:05

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信