1 #include <bits/stdc++.h>
2 #define _for(i,a,b) for(int i = (a);i < (b);i ++)
3 #define pb push_back
4 #define maxn 100
5 using namespace std;
6
7 vector<int> m[maxn];
8 int vis[maxn];
9
10 void addnode(int i,int j)
11 {
12 m[i].pb(j);m[j].pb(i);
13 }
14
15 bool dfs(int i,int pa)
16 {
17 if(vis[i] == 1) return true;//have judged
18 if(vis[i] == -1) return false;//is judging
19 vis[i] = -1;
20 _for(j,0,m[i].size())
21 if(m[i][j]!=pa && !dfs(m[i][j],i))
22 return false;
23 vis[i] = 1;
24 return true;
25 }
26
27 bool haveRing()
28 {
29 memset(vis,0,sizeof(vis));
30 _for(i,0,maxn)
31 if(!dfs(i,-1))
32 return true;
33 return false;
34 }
35
36 int main()
37 {
38 addnode(5,1);
39 addnode(1,2);
40 addnode(2,3);
41 addnode(3,4);
42 // addnode(2,2);
43 // addnode(2,4);
44 cout << haveRing() << endl;
45 return 0;
46 }