using namespace std;
struct node{
int to,next;
};
int root=0;;
node edge[100010];
int dfn[100010],low[100010];
int head[30000];
int num,nedge;
void add(int u,int v){
nedge++;
edge[nedge].to=v;
edge[nedge].next=head[u];
head[u]=nedge;
}
int kl;
void tarjan(int u,int fa){
int cnt=0;
dfn[u]=low[u]=++num;
for(int i=head[u];i!=-1;i=edge[i].next){
int v=edge[i].to;
if(v==fa)continue;
if(!dfn[v]){
tarjan(v,u);
low[u]=min(low[u],low[v]);
if(low[v]>=dfn[u]){
cnt++;
if(u!=root||cnt>1){
cout<<u<<endl;
}
}
}
else low[u]=min(low[u],dfn[v]);
kl++;
}
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
head[i]=-1;
}
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
add(u,v);
add(v,u);
}
for(int i=1;i<=n;i++){
if(!dfn[i]){
root=i;
tarjan(i,0);
}
}
cout<<kl;
}```
萌新刚学模板,不知道哪里错了