题解
2026-08-13 14:22:46
发布于:江苏
0阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5+5;
int n,m;
vector<int> g[N];
bool vis[N],flag;
void dfs(int u){ //联通块内每个顶点度为 2,则为环
vis[u] = 1;
if(g[u].size()!=2) flag = false;
for(auto v : g[u]){
if(!vis[v]) dfs(v);
}
}
int main(){
cin >> n >> m;
for(int i=1,u,v; i<=m; i++){
cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
int ans = 0;
for(int i=1;i<=n;i++){
if(!vis[i]){
flag = true;
dfs(i);
if(flag) ans++;
}
}
cout << ans;
return 0;
}
这里空空如也




有帮助,赞一个