Graph Theory NO.8 HDU_1863_畅通工程_最小生成树
2017-10-14 18:55
375 查看
昨天RE了一晚上,今天重新打了一遍就过了,莫名其妙;
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define INF 0xffffff using namespace std; int n,m; int visit[110]; int G[110][110]; int low[110]; int prim() { for(int i=1;i<=m;i++) { low[i]=G[i][1]; visit[i]=0; } visit[1]=0; int sum=0; for(int i=1;i<=m;i++) { int temp=INF,pos; for(int j=1;j<=m;j++) { if(!visit[j]&&low[j]<temp) { temp=low[j]; pos=j; } } visit[pos]=1; if(temp==INF) { return -1; } sum+=temp; for(int j=1;j<=m;j++) { if(!visit[j]&&G[pos][j]<low[j]) { low[j]=G[pos][j]; } } } return sum; } int main() { int a,b,c; while(~scanf("%d%d",&n,&m),n) { for(int i=0;i<=m;i++) { for(int j=0;j<=m;j++) { G[i][j]=INF; } G[i][i]=0; } for(int i=0;i<n;i++) { scanf("%d%d%d",&a,&b,&c); G[a][b]=G[b][a]=c; } int ans=prim(); if(ans==-1) { printf("?\n"); } else { printf("%d\n",ans); } } return 0; }
相关文章推荐
- HDU 1863 畅通工程 (最小生成树
- (最小生成树)HDU 1863 畅通工程
- D - 畅通工程 HDU - 1863 (最小生成树)
- HDU1863 畅通工程---(最小生成树)
- 畅通工程_hdu_1863(并查集+最小生成树).java
- Hdu 1863 畅通工程【最小生成树】
- HDU 1863 畅通工程 (克鲁斯卡尔—最小生成树)
- HDU 1863 畅通工程(prim最小生成树)
- HDU - 1863 - 畅通工程 (最小生成树!!prim算法!!)
- 【最小生成树+kruskal】杭电 hdu 1863 畅通工程
- HDU - 1863 畅通工程(最小生成树)
- hdu 1863 畅通工程 (并查集+最小生成树)
- HDU 1863 畅通工程 (最小生成树)
- HDU 1863 畅通工程(最小生成树,prim)
- POJ 1287 Networking(最小生成树模板)+ HDU 1863 畅通工程
- HDU 1863 畅通工程(最小生成树-Kruskal)
- 畅通工程 hdu 1232 && HDU - 1863 (并查集+最小生成树)
- HDU1863 畅通工程 最小生成树
- HDU-1863 畅通工程(最小生成树[Prim])
- HDU 1863 畅通工程 (最小生成树)