HDOJ---1863 畅通工程[Prim()]
2012-08-11 01:01
330 查看
畅通工程
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9935 Accepted Submission(s): 3916
[align=left]Problem Description[/align]
省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。
[align=left]Input[/align]
测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N
行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
[align=left]Output[/align]
对每个测试用例,在1行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出“?”。
[align=left]Sample Input[/align]
3 3 1 2 1 1 3 2 2 3 4 1 3 2 3 2 0 100
[align=left]Sample Output[/align]
3 ?
[align=left]Source[/align]
浙大计算机研究生复试上机考试-2007年
[align=left]Recommend[/align]
lcy
无压力水过
code:
#include <iostream> #include <iomanip> #include <fstream> #include <sstream> #include <algorithm> #include <string> #include <set> #include <utility> #include <queue> #include <stack> #include <list> #include <vector> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <ctype.h> using namespace std; #define MAXN 105 #define intmax 9999999 int n,m; int map[MAXN][MAXN]; int dis[MAXN]; int vst[MAXN]; void init() { int i,j; for(i=1;i<=m;i++) for(j=i;j<=m;j++) map[i][j]=map[j][i]=intmax; } int prim() { int i,j,k; int sum=0; bool flag=true; for(i=1;i<=m;i++) { vst[i]=0; dis[i]=map[1][i]; } vst[1]=1; for(i=2;i<=m;i++) { k=1; int temp=intmax; for(j=1;j<=m;j++) if(dis[j]<temp&&!vst[j]) { temp=dis[j]; k=j; } if(temp==intmax) { flag=false; break; } sum+=temp; vst[k]=1; for(j=1;j<=m;j++) if(dis[j]>map[k][j]) dis[j]=map[k][j]; } if(!flag) return -1; return sum; } int main() { int i,j; int a,b,temp; while(~scanf("%d%d",&n,&m),n) { init(); for(i=1;i<=n;i++) { scanf("%d%d%d",&a,&b,&temp); map[a][b]=map[b][a]=temp; } int ans=prim(); if(ans!=-1) printf("%d\n",ans); else printf("?\n"); } return 0; }
相关文章推荐
- hdoj 1863 畅通工程【最小生成树 kruskal && prim】
- HDOJ 1863 畅通工程 最小生成树 kruskal && prim
- hdoj 1863 畅通工程【最小生成树,kruskal&&prim】
- HDOJ 1875 畅通工程再续(prim)
- 畅通工程 HDU杭电1863【克鲁斯卡尔Kruskal || Prim】
- hdoj 1863 畅通工程 【最小生成树】
- hdu 1863 畅通工程【kruskal & prim】
- hdoj-1875 畅通工程再续【最小生成树--prim&&kruskal】
- 最小生成树——HDOJ 1863 畅通工程 解题报告
- hdu1863 畅通工程(最小生成树之prim)
- 【hdoj1863】畅通工程
- hdu 1863 畅通工程 Prim生成树
- HDOJ1863(畅通工程)
- HDOJ1863 ( 畅通工程 ) 【最小生成树,kruscal】
- hdu 1863 畅通工程 最小生成树模板入门题 prim+kruskal两种算法AC。
- Num 31 : HDOJ : 1863 畅通工程 [ kruskal( 克鲁斯卡尔 )算法 ] [ 最小生成树 ]
- HDU 1863 畅通工程 (最小生成树Prim)
- HDU-1863- 畅通工程(最小生成树,prim)
- HDOJ 1863 畅通工程
- hdoj 1863 畅通工程