Cod sursa(job #1276751)

Utilizator margikiMargeloiu Andrei margiki Data 26 noiembrie 2014 20:01:00
Problema Componente biconexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
# include <fstream>
# include <vector>
# include <algorithm>
using namespace std;
ifstream f("dirty.in");
ofstream g("dirty.out");
vector <int> v[100005];
int i,j,n,m,x,y,VV,minn,maxx;
int niv[100005],minim[100005],ap[100005],sol[100005];
void DFS (int k, int tata, int nivel)
{
    int i,comp=0;
    ap[k]=1; niv[k]=nivel; minim[k]=nivel;
    for (i=0; i<v[k].size(); ++i)
    {
        if (v[k][i]!=tata)
        {
            if (! ap[v[k][i]])
            {
                DFS (v[k][i], k, nivel+1);
                if (minim[v[k][i]]>nivel) ++comp;
            }
            minim[k]=min(minim[k],niv[v[k][i]]);
        }
    }
    if (comp>maxx) maxx=comp, VV=1, sol[VV]=k;
        else if (comp==maxx) sol[++VV]=k;
}
int main ()
{
    f>>n>>m;
    for (i=1; i<=m; ++i)
    {
        f>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    DFS (1,0,1);
    sort (sol+1, sol+VV+1);
    g<<maxx+1<<" "<<VV<<"\n";
    for (i=1; i<=VV; ++i)
        g<<sol[i]<<" ";

    return 0;
}