Cod sursa(job #2577891)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 10 martie 2020 08:21:26
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<bits/stdc++.h>
#define DIM 200010
#define mod 666013
using namespace std;
ifstream fin("clepsidra.in");
ofstream fout("clepsidra.out");
int niv[DIM],low[DIM],f[DIM],z[DIM],d[DIM];
vector<int> v[DIM],s;
int i,a,b,n,m,nr,p;
void dfs(int nod,int l,int tata)
{
    niv[nod]=low[nod]=l;
    s.push_back(nod);
    for(auto it:v[nod])
    {
        if(tata==it) continue;
        if(niv[it]){low[nod]=min(low[nod],niv[it]);continue;}
        dfs(it,l+1,nod);
        low[nod]=min(low[nod],low[it]);
        if(l<=low[it])
        {
            while(s.back()!=it){f[s.back()]=nr;s.pop_back();}
            f[s.back()]++;s.pop_back();f[nod]++;
        }
    }
}



int main()
{
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    d[i-1]=1;
    for(i=1;i<=n;i++) d[i]=2*d[i-1]%mod;
    dfs(1,0,0);
    for(i=1;i<=n;i++)
    {
        nr=0;
        for(auto it:v[i]) if(z[f[it]]==0) z[f[it]]=1,nr++;nr--;
        fout<<nr<<"\n";
        if(d[nr]-2<0) fout<<d[nr]-2+mod<<"\n";
        else fout<<d[nr]-2<<"\n";
        for(auto it:v[i]) z[f[it]]=0;
    }
    return 0;
}