hdu1863
来源:互联网 发布:根据域名查询服务器 编辑:程序博客网 时间:2024/05/21 20:28
没有理由不对呀
#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int cost[110][110];int mincost[110];bool used[110];int sett[110];int M;int prim(){ for(int i=0;i<=M;i++) { mincost[i]=2147483646; used[i]=false; } mincost[1]=0; int res=0; while(true){ int v=-1; for(int i=1;i<=M;i++) printf("%d ",mincost[i]); for(int i=1;i<=M;i++) if(!used[i] && (v==-1||mincost[i]<mincost[v])) v=i; printf("v==%d\n",v); if(v==-1) break; used[v]=true; res+=mincost[v]; for(int i=1;i<=M;i++) { mincost[i] = min(mincost[i],cost[v][i]); } } return res;}int find2(int x){ while(x!=sett[x]) x=sett[x]; return x;}int main(){ int N; while(scanf("%d%d",&N,&M)&&N){ int flag=0; for(int i=0;i<=M;i++) sett[i]=i; while(N--){ int a,b,c; scanf("%d%d%d",&a,&b,&c); cost[a][b]=c; int fa = find2(a); int fb = find2(b); if(fa!=fb) sett[fa]=fb; } int coutt=0; for(int i=1;i<=M;i++) if(sett[i]==i) coutt++; if(coutt > 1) flag=1; for(int i=1;i<=M;i++) for(int j=1;j<=M;j++) if(cost[i][j]==0) cost[i][j]= 2147483647; for(int i=1;i<=M;i++){ for(int j=1;j<=M;j++) printf("%d ",cost[i][j]); printf("\n"); } if(flag) printf("?\n"); else printf("%d\n",prim()) ; } return 0;}
0 0
- hdu1863
- HDU1863
- hdu1863
- hdu1863
- HDU1863
- hdu1863
- hdu1863
- hdu1863(prim)
- hdu1863(水)
- 畅通工程 hdu1863
- hdu1863(prim算法)
- HDU1863畅通工程
- HDU1863--畅通工程
- hdu1863-畅通工程
- hdu1863 畅通工程
- HDU1863 畅通工程
- HDU1863畅通工程
- hdu1863畅通工程
- 问题解决:Ubuntu 12.04在vmware10下无法进入Unity模式
- [html5]离线存储
- mysql代理之Atlas
- 重构set redis
- 这是一道BFS入门题
- hdu1863
- Qt 3D教程(二)初步显示3D的内容
- hdu 1213 How Many Tables
- redis主从复制(详细的)
- Group BY
- Find Peak Element
- hdu 1116 Play on Words(欧拉图)
- 【手势交互】9. PS Move
- 防止CSRF跨域攻击