【杭电】[1863]畅通工程
2016-06-04 20:23
288 查看
比普通最小生成树多了一个不成树判定
#include<stdio.h> #include<algorithm> using namespace std; int dis[120]; int e[120][120]; bool flag[120]; int inf=99999999; int main() { int m; while(scanf("%d",&m),m) { int n; scanf("%d",&n); for(int i=1; i<=n; i++) { dis[i]=inf; flag[i]=false; } for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { e[i][j]=inf; } } while(m--) { int i,j,t; scanf("%d %d %d",&i,&j,&t); if(e[i][j]>t) { e[i][j]=t; e[j][i]=t; } } int sum=0; dis[1]=0; bool x=true; while(true) { int v=-1; for(int u=1; u<=n; u++) { if(!flag[u]&&(v==-1||dis[u]<dis[v])) v=u; } if(v==-1) break; else { flag[v]=true; if(dis[v]==inf) { x=false; printf("?\n"); break; } else sum+=dis[v]; for(int u=1; u<=n; u++) { dis[u]=min(dis[u],e[v][u]); } } } if(x) printf("%d\n",sum); } return 0; }
题目地址:【杭电】[1863]畅通工程
相关文章推荐
- 详解图的应用(最小生成树、拓扑排序、关键路径、最短路径)
- 最小生成树算法之Prim算法
- 使用C语言实现最小生成树求解的简单方法
- 最小生成树算法——Prim和Kruskal算法的实现
- Data Structure - Week 15
- 高精度加法——杭电1002
- Hdu2066(一个人的旅行)
- poj 2485 Highways
- HDU1301 最小生成树kruskal裸题
- Kruskal 最小生成树
- 最小生成树
- 杭电1870 愚人节的礼物
- 关于杭电1405 The Last Practice 的问题
- hdu-1103 模拟题。
- hdu-1022 栈的应用。
- hdu-1247 简单map的应用。(字典树)
- hdu-1251 字典树公共前缀。
- hdu-1075 map映射表的应用。
- 杭电ACM Steps (1)
- hdu 1005 -- Number Sequence