问下大佬们这个代码哪有问题,wa了一个测试点,怎么都调不出来
查看原帖
问下大佬们这个代码哪有问题,wa了一个测试点,怎么都调不出来
44175
肥嘟嘟左卫门楼主2022/7/2 10:32
#include<bits/stdc++.h>
using namespace std;
const long long maxx=0x3f3f3f3f3f3f3f3f;
const long long minn=0xc0c0c0c0c0c0c0c0;
const double pi = 4.0*atan(1.0);
#define int long long
#define f(i,n,m) for(long long i=n;i<=m;++i)
#define unf(i,n,m) for(long long i=n;i>=m;--i)
#define kong NULL
#define debug cout<<"sss"<<endl;

int n,m,low[200100],dfn[200100];
vector<int>mp[200100];
int fact[200100];
int zhan[200100];
int cha[200100];
int top=0;
vector<int>zh;
int tim;

void dfs(int x,int fa){
    tim++,low[x]=dfn[x]=tim;
    int ch=0;
    for(auto it:mp[x]){
        if(!dfn[it]){
            dfs(it,fa);
            low[x]=min(low[x],low[it]);
            if(low[it]>=dfn[x]&&x!=fa)fact[x]=1;
            if(x==fa)ch++;
        }
        low[x]=min(low[x],dfn[it]);
    }
    if(ch>2&&x==fa)fact[x]=1;
}
void solve() {
    memset(dfn,0,sizeof(dfn));
   
cin>>n>>m; f(i,1,n)mp[i].clear();
f(i,1,m){
    int x,y;
    cin>>x>>y;
    mp[x].push_back(y);
    mp[y].push_back(x);
}
f(i,1,n){
    if(!dfn[i])dfs(i,i);
}
int ans=0;
f(i,1,n){
    if(fact[i])ans++;
}
cout<<ans<<endl;
f(i,1,n){
    if(fact[i])cout<<i<<" ";
}


}
















signed main( )
{
ios::sync_with_stdio(false);
solve();
return 0;
}















2022/7/2 10:32
加载中...