hdoj 1863 畅通工程 最小生成树---prime算法
2013-07-27 20:41
260 查看
题目: http://acm.hdu.edu.cn/showproblem.php?pid=1863
注意有可能出现无法生成树的情况。
注意有可能出现无法生成树的情况。
#include <iostream> #include <cstring> using namespace std; const int inf=0xffffff; int weight[105][105],n,m; int prime() { int sum=0; int pre[105]; int dis[105]; bool visit[105]; memset(visit,0,sizeof(visit)); for(int i=1;i<=m;i++) { dis[i]=weight[1][i]; pre[i]=1; } visit[1]=1; for(int i=1;i<m;i++) { int minimum=inf; int index=-1; for(int j=1;j<=m;j++) { if(!visit[j] &&dis[j]<minimum){ minimum=dis[j]; index=j; } } if(index==-1)return inf; visit[index]=1; sum+=weight[pre[index]][index]; for(int j=1;j<=m;j++) { if(!visit[j]&& dis[j]>weight[index][j]) { dis[j]=weight[index][j]; pre[j]=index; } } } return sum; } int main() { while(cin>>n>>m) { if(n==0)break; for(int i=1;i<=m;i++) for(int j=1;j<=m;j++) weight[i][j]=inf; for(int i=0;i<n;i++) { int x,y,z; cin>>x>>y>>z; weight[x][y]=z; weight[y][x]=z; } int ans=prime(); if(ans==inf){cout<<"?"<<endl;continue;} cout<<ans<<endl; } }
相关文章推荐
- hdoj 1863 畅通工程 最小生成树---prime算法
- HDOJ 1863:畅通工程 Prim算法求解最小生成树
- hdoj 1233 还是畅通工程---最小生成树---prime算法
- hdoj 1863 畅通工程 【最小生成树】
- hdoj 1863 畅通工程(最小生成树)
- HDOJ 1863 畅通工程 (最小生成树)
- HDOJ1863 ( 畅通工程 ) 【最小生成树,kruscal】
- hdoj 1233 还是畅通工程---最小生成树---prime算法
- HDOJ 1863 畅通工程(最小生成树--kruskal)
- Num 31 : HDOJ : 1863 畅通工程 [ kruskal( 克鲁斯卡尔 )算法 ] [ 最小生成树 ]
- HDOJ 1863 畅通工程 最小生成树 kruskal && prim
- hdoj 1863 畅通工程 【最小生成树】+【kruskal】
- HDOJ 1863 畅通工程(Kruskal最小生成树)
- HDOJ 1863 畅通工程 (Kruskal 最小生成树)
- hdoj 1863 畅通工程【最小生成树,kruskal&&prim】
- hdoj 1863 畅通工程【最小生成树 kruskal && prim】
- HDOJ 1863 畅通工程 (最小生成树]
- 最小生成树——HDOJ 1863 畅通工程 解题报告
- HDOJ1863 畅通工程 最小生成书裸题
- 最小生成树——HDOJ 1233 还是畅通工程 解题报告