poj 1679 The Unique MST
来源:互联网 发布:java多线程并发视频 编辑:程序博客网 时间:2024/06/05 01:50
链接:点击打开链接
题意是:求最小生成树,若不唯一则输出'Not Unique!'.。否则输出那个最小权值和。用prime算法,设一个v[]数组,初值0;每次找到的点的放进集合中厚v[i]为1,在求集合到某点的最小距离若有两条边到该点的距离都是那个最小距离则v[]标记为2。
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;#define INF 0x7f7f7f7fint edge[105][105],len;int nn,vis[105],m;void prime(int x){ int i,j,k; int mark[105],mi_n; int sum_i; memset(vis,0,sizeof(vis)); for(i=1;i<=nn;i++) mark[i]=edge[x][i]; vis[x]=1; sum_i=0; for(i=1;i<=nn;i++){ mi_n=INF; for(j=1;j<=nn;j++){ if(mark[j]<mi_n){ mi_n=mark[j]; k=j; } } if(mi_n==INF) break; if(vis[k]==2){ printf("Not Unique!\n"); return; } vis[k]=1; mark[k]=INF; sum_i+=mi_n; for(j=1;j<=nn;j++){ if(vis[j]!=1&&edge[k][j]<=mark[j]&&edge[k][j]!=INF){ if(edge[k][j]<mark[j]){ mark[j]=edge[k][j]; vis[j]=0; } else vis[j]=2; } } } printf("%d\n",sum_i);}int main(){ int i,j,x,y,z,t; scanf("%d",&t); while(t--){ scanf("%d %d",&nn,&m); for(i=1;i<=nn;i++) for(j=1;j<=nn;j++) edge[i][j]=INF; for(i=1;i<=m;i++){ scanf("%d %d %d",&x,&y,&z); edge[x][y]=edge[y][x]=z; } prime(1); } return 0;}
- POJ 1679 The Unique MST
- poj 1679 The Unique MST
- poj 1679 The Unique MST
- POJ 1679 The Unique MST
- poj 1679 The Unique MST
- poj 1679 The Unique MST
- POJ-1679 The Unique MST
- POJ 1679 The Unique MST
- POJ 1679 The Unique MST
- POJ-1679-The Unique MST
- Poj 1679 The Unique MST
- poj 1679 The Unique MST
- POJ-1679-The Unique MST
- POJ 1679 The Unique MST
- POJ 1679 The Unique MST
- POJ-1679-The Unique MST
- poj 1679 The Unique MST
- poj 1679-The Unique MST
- Android--ContentProvider跨程序访问数据
- 九种卫星地图的快速比较和选择方法
- CVPR2013 论文(visual tracking相关,可供下载)
- Java IO 中的设计模式
- WHERE 关键字无法与合计函数一起使用
- poj 1679 The Unique MST
- 流媒体开发之-服务器图片的加载
- spring jar包详解及jar包下载
- Myeclipse SVN错误:Error validating server certificate for https//
- 使用itext将html生成pdf中文换行问题解决方案2
- 微信--了解与试水与使用之间的差距是未知的
- Linux系统调用中的参数验证
- 超简单的NDK单步调试方法
- netty websocket 后台消息推送