HDOJ 1325 Is It A Tree(并查集)
2017-08-29 22:29
344 查看
思路;
形成树的两个条件
1,图中不存在回路。
2.图是连通的。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int fa[100010],vis[100010];
int a,b,dian,bian,flag;
int find(int x){
if(x!=fa[x]){
fa[x]=find(fa[x]);
}
return fa[x];
}
void uni(int x,int y){
if(!flag) return ;
int fx=find(x);
int fy=find(y);
if(fx!=fy)
fa[fx]=fy;
}
void mem(){
for(int i=1;i<=100010;i++)
fa[i]=i;
bian=dian=0;
flag=1;
memset(vis,0,sizeof(vis));
}
void jud(){
int te=0;
for(int i=1;i<=100010;i++)
if(vis[i]&&find(i)==i) te++;
if(te==1||te==0) flag=1;
else flag=0;
// cout<<"te="<<te<<endl;
}
int main(){
int ca=1;
mem();
while(scanf("%d%d",&a,&b)){
if(a==-1&&b==-1) break;
if(a==0&&b==0){
if(flag) jud();
if(flag) printf("Case %d is a tree.\n",ca++);
else printf("Case %d is not a tree.\n",ca++);
mem();
}
else{
vis[a]=vis[b]=1;
if(find(a)==find(b)){
flag=0;
}
uni(a,b);
}
}
return 0;
}
形成树的两个条件
1,图中不存在回路。
2.图是连通的。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int fa[100010],vis[100010];
int a,b,dian,bian,flag;
int find(int x){
if(x!=fa[x]){
fa[x]=find(fa[x]);
}
return fa[x];
}
void uni(int x,int y){
if(!flag) return ;
int fx=find(x);
int fy=find(y);
if(fx!=fy)
fa[fx]=fy;
}
void mem(){
for(int i=1;i<=100010;i++)
fa[i]=i;
bian=dian=0;
flag=1;
memset(vis,0,sizeof(vis));
}
void jud(){
int te=0;
for(int i=1;i<=100010;i++)
if(vis[i]&&find(i)==i) te++;
if(te==1||te==0) flag=1;
else flag=0;
// cout<<"te="<<te<<endl;
}
int main(){
int ca=1;
mem();
while(scanf("%d%d",&a,&b)){
if(a==-1&&b==-1) break;
if(a==0&&b==0){
if(flag) jud();
if(flag) printf("Case %d is a tree.\n",ca++);
else printf("Case %d is not a tree.\n",ca++);
mem();
}
else{
vis[a]=vis[b]=1;
if(find(a)==find(b)){
flag=0;
}
uni(a,b);
}
}
return 0;
}
相关文章推荐
- Zju 1268 Is It A Tree?解题分析(附:HDOJ 1325 并查集参考代码)
- HDOJ 题目1325 Is It A Tree?(并查集)
- HDOJ 1325 Is It A Tree?(并查集)
- HDOJ 1325 Is It A Tree? (并查集的查找)
- 并查集判树 hdoj 1325 Is it a tree?
- hdoj1325Is It A Tree?(并查集)
- 【HDOJ】1325 Is It A Tree?
- hdu 1325 Is It A Tree?(并查集)
- hdoj 1325 Is It A Tree?
- 【HDU】-1325-Is It A Tree?(并查集)
- HDU-1325 Is It A Tree? ACM解题报告(恶心的并查集)
- HDU 1272小希的迷宫 1325Is It A Tree? 并查集确定图为树
- TOJ 1856 POJ 1308 HDU 1325 Is It A Tree? / 并查集
- hdu 1325 Is It A Tree?(并查集)
- 【杭电oj】1325 - Is It A Tree?(树,并查集)
- POJ 1308 && HDU 1325 Is It A Tree?(并查集)
- 杭电 hdu 1272 小希的迷宫 和 hdu 1325 Is It A Tree?(最下生成树 + 并查集)
- Graph Theory NO.3 HDU_1325_Is It A Tree_并查集
- hdu 1325 Is It A Tree?(并查集)
- HDU 1325 Is It A Tree?(并查集)