re#1~#11求调
查看原帖
re#1~#11求调
1364845
machenchang楼主2025/2/7 18:48
#include<bits/stdc++.h>
using namespace std;
int dfn[1001],low[1001],a,n,m,cnt,root,g;
int num[2001],nxt[2001],head[1001];
bool flag[1001];
void dfs(int cur,int fa){
    int ch=0;
    dfn[cur]=++a;
    low[cur]=a;
    for(int i=head[cur];i;i=nxt[i])
    {
        int k=num[i];
        if(!dfn[k]){
            ch++;
            dfs(k,cur);
            low[cur]=min(low[cur],low[k]);
            if(cur!=root&&low[k]>=dfn[cur]){
				flag[cur]=true;
 			}
            if(cur==root&&ch>=2){
            	flag[cur]=true;
			}
        }
        else
        {
            if(k!=fa)
            low[cur]=min(low[cur],dfn[k]);
        }
    }
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int x,y;
        cin>>x>>y;
        num[++cnt]=y;
        nxt[cnt]=head[x];
        head[x]=cnt;
        num[++cnt]=x;
        nxt[cnt]=head[y];
        head[y]=cnt;
    } 
    root=1;
    dfs(1,root);
    for(int i=1;i<=n;i++){
    	if(flag[i]){
    		g++;
		}
	}
	cout<<g<<endl;
    for(int i=1;i<=n;i++){
    	if(flag[i]){
    		cout<<i;
		}
	}
    return 0;
} 
2025/2/7 18:48
加载中...