Cod sursa(job #2696842)

Utilizator rareshinnhoMiroiu Rares rareshinnho Data 16 ianuarie 2021 22:56:42
Problema Componente biconexe Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f ("clepsidra.in");
ofstream g ("clepsidra.out");
#define MOD 666013
int n,m,i,x,y;
int niv[500010],low[500010],prez[500010],sol[500010],tata[500010];
long long p2[500010];
vector <int> v[500010];
void dfs(int nod)
{
    int x = 0,i,it;
    prez[nod]=1;
    low[nod]=niv[nod];
    for(i=0;i<v[nod].size();i++)
    {
        it=v[nod][i];
        if(it != tata[nod])
        {
            if(prez[it]) low[nod] = min(low[nod], niv[it]);
            else
            {
                niv[it] = niv[nod] + 1;
                tata[it] = nod;
                dfs(it);
                low[nod] = min(low[nod], low[it]);
                if(low[it] >= niv[nod])x++;
            }
        }
    }
    if(tata[nod])x++;
    sol[nod] = x;
}
int main()
{
    f>>n>>m;
    for(i=1; i<=m; i++)
    {
        f>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    niv[1]=1;
    dfs(1);
    for(i=1; i<=n; i++){p2[0]=1;p2[i] = (p2[i-1] * 2) % MOD;}
    for(i=1; i<=n; i++)g<<(p2[sol[i]]-2+MOD)%MOD<<'\n';
    return 0;
}