没过,以后再来看/*
有向图,判断树
每个点保存出度
每个非根点最多只能有一个入度
用并查集判断连通性
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#define MAXN 1000000
using namespace std;
int F[MAXN];
int in[MAXN];
bool used[MAXN];
int circle,edge;
int find(
int x){
if(F[x]==-
1)
return x;
return F[x]=
find(F[x]);
}
void bing(
int a,
int b){
int t1=
find(a);
int t2=
find(b);
if(t1!=
t2)
F[t1]=
t2;
else
circle=
1;
}
void init(){
circle=edge=
0;
memset(F,-
1,
sizeof F);
memset(in,
0,
sizeof in);
memset(used,0,
sizeof used);
}//要求,circle=0,
int main(){
int tt=
0;
int u,v;
while(scanf(
"%d%d",&u,&v)==
2){
if(u==-
1 && v==-
1)
break;
if(u==
0 && v==
0){
printf("Case %d is a tree.\n",tt);
continue;
}
init();
int Max=-
1;
edge++
;
Max=max(Max,u);Max=
max(Max,v);
bing(u,v);
while(
1){
scanf("%d%d",&u,&
v);
if(u==
0)
break;
edge++
;
Max=max(Max,u);Max=
max(Max,v);
bing(u,v);
}
int cnt=
0;
if(circle==
0 &&
edge)
}
return 0;
}
转载于:https://www.cnblogs.com/zsben991126/p/9823357.html
相关资源:各显卡算力对照表!
转载请注明原文地址: https://win8.8miu.com/read-14837.html