Cod sursa(job #874311)

Utilizator misinoonisim necula misino Data 8 februarie 2013 09:51:45
Problema Cerere Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int n,i,a,b,t,vf,v,v1,st[100009],k[100009],c[100009],nr[100009];
vector<int>l[100009];
int main()
{
    f>>n;
    for(i=1;i<=n;++i)
    f>>k[i];
    for(i=1;i<n;++i)
    {
        f>>a>>b;
        l[a].push_back(b);
        t^=b;
        t^=i;
    }
    t^=b;
    vf++;
    st[vf]=t;
    while(vf)
    {
        v=st[vf];
        if(nr[v]==(int)l[v].size())
        --vf;
        else
        {
            v1=l[v][nr[v]];
            ++nr[v];
            ++vf;
            st[vf]=v1;
            if(k[v1]>0)
            {
                c[v1]=c[st[vf-k[v1]]]+1;
            }
        }
    }
    for(i=1;i<=n;++i)
    g<<c[i]<<' ';
    return 0;
}