为什么样例都过不了
#include <bits/stdc++.h>
using namespace std;
int n, m;
const int maxn = 1e5+1;
struct edge{
int v, nxt;
}edge[maxn <<1];
int head[maxn];
int cnt = 0;
void addedge(int u, int v) {
cnt++;
edge[cnt].v = v;
edge[cnt].nxt = head[u];
head[u] = cnt;
}
int low[maxn], num[maxn], dfn = 0;
int iscut[maxn];
void dfs(int u, int fa) {
low[u] = num[u] = ++dfn;
int child = 0;
for(int i =head[u]; i ; i = edge[i].nxt) {
int v = edge[i].v;
if(!num[v]) {
if(u == fa) child++;
dfs(v, u);
low[u] = min(low[v], low[u]);
if(low[v] >= num[u] && u != fa) {
iscut[u] =1;
}
else if(num[v] < num[u] && v != fa)
low[u] = min(low[u], num[v]);
}
}
if( u == fa && child >= 2) {
iscut[fa] = 1;
}
}
int main() {
cin >> n >> m;
for(int i = 1; i<= m; i++) {
int a, b;
scanf("%d%d", &a, &b);
addedge(a, b);
addedge(b, a);
}
for(int i =1; i<= n ;i++){
if(!num[i]) dfs(i, i);
}
int ans = 0;
for(int i =1; i<= n; i++)
ans += iscut[i];
printf("%d\n", ans);
for(int i =1; i<= n; i++)
if(iscut[i]) printf("%d\n", i);
return 0;
}
这个代码测样例会跑出两个割点来。。。