Cod sursa(job #3315553)

Utilizator popescu_georgePopescu George popescu_george Data 14 octombrie 2025 19:02:42
Problema Componente biconexe Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream cin("biconex.in");
ofstream cout("biconex.out");
const int N=1e5+1;
vector<int> g[N];
char c[N];
int d[N],f[N],p,q[250000],r,u;
void P(int i)
{
	c[i]=2,q[++p]=i;
	for(auto j:g[i])
        if(c[j]==1)
            P(j);
}
void E(int i)
{
	d[i]=f[i]=++u,c[i]=1;
	for(auto j:g[i])
        if(!c[j]) {
            if(E(j),f[i]>f[j])
                f[i]=f[j];
            if(d[i]<=f[j])
                c[i]=2,q[++p]=i,P(j),c[i]=1,q[++p]=0,++r;
        } else if(f[i]>d[j])
            f[i]=d[j];
}
int main()
{
    int m,n;
	for(cin>>n>>m;m--;) {
        int i,j;
        cin>>i>>j,g[i].push_back(j),g[j].push_back(i);
	}
	for(E(1),cout<<r<<'\n',--p;p;q[p]?cout<<q[p]<<' ':cout<<'\n',--p);
    return 0;
}