Cod sursa(job #1035444)

Utilizator jul123Iulia Duta jul123 Data 18 noiembrie 2013 16:24:36
Problema Cerere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
vector<int>v[100000];
int rad,  q[100000], cred[100000], g[100000], prim, ultim, k=0, nr[100000];
bool viz[100000];

void DF(int nod)
{
    int i;
    ultim++;
    q[ultim]=nod;
    cred[nod]=cred[q[ultim-g[nod]]];
    nr[nod]=nr[q[ultim-g[nod]]]+1;
    int z=v[nod].size();
    for(i=0; i<z; i++)
    { DF(v[nod][i]);}
    ultim--;
}
int main()
{
    int n, i, x, y;
    FILE *fin, *fout;
    fin=fopen("cerere.in", "r");
    fout=fopen("cerere.out", "w");
    fscanf(fin, "%d", &n);
    for(i=1; i<n+1; i++)
        {fscanf(fin, "%d", &g[i]); viz[i]=false;}
    for(i=1; i<n; i++)
        {
            fscanf(fin, "%d%d", &x, &y);
            v[x].push_back(y);
            viz[y]=true;
        }
    for(i=1; i<n+1;i++)
        if(viz[i]==false)
            rad=i;
    for(i=1; i<n+1; i++)
        {cred[i]=i; nr[i]=0;}
        prim=1; ultim=0;
    DF(rad);
    for(i=1; i<n+1; i++)
        fprintf(fout, "%d ", nr[i]-1);


}