Pagini recente » Cod sursa (job #1142174) | Cod sursa (job #1692458) | Cod sursa (job #2147697) | Cod sursa (job #1263139) | Cod sursa (job #2285938)
#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;
}