Cod sursa(job #2285938)

Utilizator Tudor27Tudor Iacob Tudor27 Data 19 noiembrie 2018 16:02:07
Problema Cerere Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 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 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]){
            ii=i;
            c=0;
            while(k[ii]){
                q[c]=ii;
                c++;
                x=k[ii];
                for(int j=0;j<x;j++){
                    ii=v[ii];
                }
            }

            for(int j=0;j<c;j++){
                b[q[j]]=c-j;
            }
        }
    }
    for(int i=1;i<=n;i++){
        fout<<b[i]<<" ";
    }
    return 0;
}