Cod sursa(job #2285941)

Utilizator Tudor27Tudor Iacob Tudor27 Data 19 noiembrie 2018 16:06:08
Problema Cerere Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <iostream>
#include <fstream>


using namespace std;

ifstream fin("cerere.in");
ofstream fout("cerere.out");

int v[100007];
int n;
int b[100007];
int k[100007];
int q[100007];
int c;

int f(int i){
    if(k[i]==0){
        return 0;
    }
    int i2=i;
    for(int j=0;j<k[i];j++){
        i2=v[i2];
    }
    b[i]=f(i2)+1;
    return b[i];
}


int main()
{
    fin>>n;
    int x,y,ii;
    for(int i=1;i<=n;i++){
        fin>>k[i];
    }
    while(!fin.eof()){
        fin>>x>>y;
        v[y]=x;
    }
    for(int i=1;i<=n;i++){
        if(!b[i]){
            f(i);
        }
    }
    for(int i=1;i<=n;i++){
        fout<<b[i]<<" ";
    }
    return 0;
}