Cod sursa(job #1344531)

Utilizator rsteliRadu Stelian rsteli Data 16 februarie 2015 19:54:51
Problema Componente biconexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("clepsidra.in");
ofstream cout("clepsidra.out");

#define mod 666013
#define nmax 200010
#define pb push_back
#define forv(v,it) for (vector<int>::iterator it=v.begin();it!=v.end();it++)
#define forn(i,a,b) for (int i=a;i<=b;i++)

int n,m,x,y,fii;
int dfn[nmax],low[nmax],v[nmax],art[nmax];
vector<int> g[nmax];

void dfs(int nod,int p,int num)
{
    dfn[nod]=low[nod]=++num;
    forv(g[nod],it)
    {
        if (*it==p) continue;
        if (!dfn[*it])
        {
            if (nod==1) fii++;
            dfs(*it,nod,num);
            low[nod]=min(low[nod],low[*it]);
            if (low[*it]>=dfn[nod])
                if (nod!=1) art[nod]=1;
        }
        else low[nod]=min(low[nod],dfn[*it]);
    }
}

int p2(int nod)
{
    int exp,r=1;
    forn(i,1,v[nod]-1)
        r*=2,r%=mod;
    r-=2;
    if (r<0)
        r+=mod;
    return r;
}

int main()
{
    cin>>n>>m;
    forn(i,1,m)
    {
        cin>>x>>y;
        v[x]++,v[y]++;
        g[x].pb(y);
        g[y].pb(x);
    }
    dfs(1,0,0);
    if (fii>1) art[1]=1;
    forn(i,1,n)
        if (!art[i]) cout<<0<<'\n';
        else cout<<p2(i)<<'\n';
}