Pagini recente » Cod sursa (job #1034188) | Cod sursa (job #2603721) | Cod sursa (job #2950754) | Cod sursa (job #2441292) | Cod sursa (job #893397)
Cod sursa(job #893397)
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;
ifstream in ("cerere.in");
ofstream out ("cerere.out");
vector<vector<int> > *a;
int stramos(int l,int k){
if(k == 0)
return l ;
stramos((*a)[1][l],k-1);
}
int cal(int j){
if((*a)[2][j] == -1)
return 1;
if((*a)[3][j] == 0)
(*a)[3][j] = cal ((*a)[2][j]);
return (*a)[3][j]+1;
}
int main (){
int n,i,j,t;
in>>n;
vector<vector<int> > v(4,vector<int>(n+1));
a = &v;
for(i=1;i<=n;i++)
{
in>>v[0][i];
}
for(i=0;i<n;i++)
{
in>>j>>t;
v[1][t] = j;
}
for(i=1;i<=n ;i++)
{
if(v[0][i] == 0){
v[2][i] = -1;
}
else
if(v[2][i] == 0)
v[2][i] = stramos(i,v[0][i]);
}
for(i=1;i<=n;i++)
if(v[2][i] != -1)
cal(i);
//for(i=1;i<=n;i++)
//cout<<v[1][i]<<" ";
//cout<<"\n";
for(i=1;i<=n;i++)
out<<v[3][i]<<" ";
}