poj 1679 The Unique MST
2018-02-17 16:17
211 查看
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; struct data { int u,v,w; int same; int use; int del; }e[10000+5]; int n,m,bin[1000+5],f; bool cmp(data a,data b) { return a.w<b.w; } int Find(int x) { int s; for(s=x;bin[s]>=0;s=bin[s]); while(s!=x) { int t=bin[x]; bin[x]=s; x=t; } return s; } void Union(int x1,int x2) { int f1=Find(x1),f2=Find(x2); int t=bin[f1]+bin[f2]; if(bin[f1]>bin[f2]) { bin[f1]=f2; bin[f2]=t; } else { bin[f2]=f1; bin[f1]=t; } } int kruskal() { int i,num=0,u,v,ans=0; for(i=0;i<=n+5;i++) bin[i]=-1; for(i=0;i<m;i++) { //printf("%d\n",i); if(e[i].del==1) continue; u=e[i].u; v=e[i].v; if(Find(u)!=Find(v)) { Union(u,v); num++; ans+=e[i].w; if(f) e[i].use=1; } if(num>=n-1) break; } return ans; } int main() { int _,i,j,k,ans1,ans2; scanf("%d",&_); while(_--) { scanf("%d%d",&n,&m); for(i=0;i<m;i++) { scanf("%d %d %d",&e[i].u,&e[i].v,&e[i].w); e[i].u--; e[i].v--; e[i].use=0; e[i].same=0; e[i].del=0; } for(i=0;i<m;i++) for(j=0;j<m;j++) { if(i==j) continue; if(e[i].w==e[j].w) e[i].same=e[j].same=1; } f=1; sort(e,e+m,cmp); ans1=kruskal(); f=0; for(i=0;i<m;i++) { if(e[i].same==1&&e[i].use==1) { e[i].del=1; ans2=kruskal(); if(ans2==ans1) { printf("Not Unique!\n"); break; } e[i].del=0; } } if(i>=m) printf("%d\n",ans1); } return 0; }
相关文章推荐
- POJ 1679 The Unique MST 次小生成树
- poj&nbsp;1679&nbsp;The&nbsp;Unique&nbsp;MST(kruskal)
- POJ 1679:The Unique MST(次小生成树&&Kruskal)
- POJ 1679 The Unique MST (次小生成树)
- poj1679 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( 判断最小生成树是否唯一)
- POJ1679 The Unique MST(Kruskal)(最小生成树的唯一性)
- POJ 1679 The Unique MST 最小代价生成树 次小代价生成树
- POJ 1679 - The Unique MST - 次小生成树
- POJ 1679 The Unique MST【最小生成树问题相关】
- POJ 1679 The Unique MST 次小生成树