Cod sursa(job #1003349)

Utilizator miha88Popescu Mihaela miha88 Data 30 septembrie 2013 15:12:40
Problema Cerere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
#define nmax 100005
int nr,st[nmax],n,s,m[nmax],v[nmax],x,y;
vector <int> a[nmax];
void citire()
{
    f>>n;
    for (int i=1;i<=n;i++)
        f>>v[i];
    s=n*(n+1)/2;
    for(int i=0;i<n-1;i++)
        {
            f>>x>>y;
            s-=y;
            a[x].push_back(y);
        }
}
void dfs(int x)
{
    nr++;
    st[nr]=x;
    if(v[x]==0)
        m[x]=0;
    else
        {
            m[x]=m[st[nr-v[x]]]+1;
        }
    for(int i=0;i<a[x].size();i++)
        dfs(a[x][i]);
    nr--;
}
int main()
{
    citire();
    dfs(s);
    for(int i=1;i<=n;i++)
        g<<m[i]<<' ';
    return 0;
}