判断一颗树是否有环 发表于 2019-06-19 | 分类于 倍增 判断一个树是否有环123456789101112131415161718192021222324252627282930313233343536373839#include<bits/stdc++.h>using namespace std;int flag=1;int v[100];int head[100],ver[100<<1],nex[100<<1];int tot;void add(int x,int y){ ver[++tot]=y,nex[tot]=head[x],head[x]=tot;}bool dfs(int now,int fa){ // printf("now=%d\n",now); v[now]=1; for(int i=head[now];i;i=nex[i]){ int y=ver[i]; // printf("y=%d\n",y); // printf("%d %d\n",now,y); if(y==fa) continue; else { // printf("%d %d\n",now,y); if(v[y]) return 1; if(dfs(y,now)) return 1; } } return 0;}int main(){ int n,m; cin>>n>>m; for(int i=1;i<=m;i++){ int x,y; cin>>x>>y; add(x,y); add(y,x); } if(dfs(1,0)) printf("you\n"); else printf("wu\n"); for(int i=1;i<=n;i++) printf("%d",v[i]); //system("pause");} 打赏 微信支付 支付宝