/**
[MST] poj 1679 判断一个图中的MST是否唯一。
先生成一颗MST,然后依次删除用过的且有多个相同权值的边重新建树,判断两棵树是否相等。
边的信息除u v c,还需要used(第一次建树使用的边) del(是否被删除) equal(是否有等边)
*/
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 124
#define M 10001
struct _edge{
int u,v,c;
bool used,del,equal;
void input(){
scanf("%d%d%d",&u,&v,&c);
used = del = equal = 0;
}
}E[M];
bool cmp(_edge a,_edge b){
return a.c < b.c;
}
int f[N],r[N];
int first,n,m;
int getF(int x){
return x == f[x] ? x : getF(f[x]);
}
int Union(int x,int y){
x = getF(x);
y = getF(y);
if(x == y)
return 0;
if(r[x] > r[y])
f[y] = x;
else{
f[x] = y;
if(r[x] == r[y])
r[y] ++;
}
return 1;
}
int mst(){
int i,ans = 0;
for(i = 0; i <= n;
[MST] poj 1679
判断图中最小生成树的唯一性
最新推荐文章于 2019-05-04 17:33:50 发布
该博客介绍了一种方法来判断图中的最小生成树(MST)是否唯一。通过构建MST,然后删除使用过的具有多个相同权值的边,并重新构建树,比较两棵树是否相等来判断。博客内容包括相关的数据结构定义、排序、并查集操作以及核心的MST判断算法。
订阅专栏 解锁全文
137

被折叠的 条评论
为什么被折叠?



