畅通工程
来源:互联网 发布:python多行注释快捷键 编辑:程序博客网 时间:2024/05/18 00:36
省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。
行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
3 31 2 11 3 22 3 41 32 3 20 100
3?
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;int b[1000][1000];int main(){ int a[1000],mark[1000]; int m,n,i,x,y,z,k,min,s,q; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0){break;} memset(b,0,sizeof(b)); memset(a,0,sizeof(a)); memset(mark,0,sizeof(mark)); for(i=0;i<n;i++) { scanf("%d%d%d",&x,&y,&z); b[x][y]=z; } k=1;int sum=1;s=1; while(k) { mark[k]=2; for(i=1;i<=m;i++) { if(b[k][i]!=0&&(a[i]>b[k][i]||a[i]==0)&&mark[i]!=2) { a[i]=b[k][i]; mark[i]=1; min=a[i]; s=i; } if(b[i][k]!=0&&(a[i]>b[i][k]||a[i]==0)&&mark[i]!=2) { a[i]=b[i][k]; mark[i]=1; min=a[i]; s=i; } } for(i=1;i<=m;i++) { if(a[i]!=0&&a[i]<min&&mark[i]==1) { min=a[i]; s=i; } } sum++; if(k==s) { if(sum>=m) { q=1; break; } else { q=0; break; } } else { k=s; } } if(q==1) { int ans=0; for(i=1;i<=m;i++) { ans=ans+a[i]; } printf("%d\n",ans); } else { printf("?\n"); } } return 0;}
阅读全文
0 0
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 畅通工程
- 利用set对list进行合并去重
- [hihocoder1322] 树结构判定
- 对搜索引擎(SEO)的索引有帮助一些HTML标签
- 【二十四】Visual Studio 2013 好用的插件
- 【Java】Java图形化用户界面-GUI
- 畅通工程
- eclipse启动tomcat警告 [SetPropertiesRule]{Server/Service/Engine/Host/Context}
- Typeof
- 数组的原生方法的总结
- tomcat问题集锦
- OpenGL学习-VS2013 OpenGL环境配置
- mex -setup 提示找不到SDK或编译器
- 【Java】Java中线程的使用
- Android实现验证码倒计时简单效果