题意:
就是找出所有环的个数, 但这个环中的每个点都必须只在一个环中
解析:
在找环的过程中 判断度数是否为2就行。。。emm。。。
#include <bits/stdc++.h> using namespace std; const int maxn = 1e6 + 10, INF = 0x7fffffff; int n, m, s, t, flag; vector<int> G[maxn]; int vis[maxn], res; void dfs(int u, int fa) { vis[u] = 1; for(int i=0; i<G[u].size(); i++) { int v = G[u][i]; if(v == fa) continue; if(vis[v]) { s = v; if(G[u].size() != 2) flag = 0; //判断是否在一个简单环中 return; } else { dfs(v, u); if(G[u].size() != 2) flag = 0; break; } } if(flag == 1 && s == u) res++; } int main() { int u, v; res = 0; cin >> n >> m; for(int i=0; i<m; i++) { cin >> u >> v; G[u].push_back(v); G[v].push_back(u); } for(int i=1; i<=n; i++) { if(!vis[i]) { s = INF, flag = 1; dfs(i, -1); } } cout << res << endl; return 0; }