Pagini recente » Cod sursa (job #1416595) | Cod sursa (job #1856839) | Cod sursa (job #2250773) | Cod sursa (job #862793) | Cod sursa (job #500797)
Cod sursa(job #500797)
#include<fstream>
#define dmax 100010
using namespace std;
int n;
int a[dmax],tata[dmax],stramos[dmax],sol[dmax];
void calc_stramos()
{
int i,j;
for (i=1; i<=n; i++)
if (a[i]!=0)
for (j=1; j<=a[i]; j++)
stramos[i]=tata[stramos[i]];
}
int numar(int k)
{
if (a[k]==0)
return 0; else
if (sol[stramos[k]]!=-1)
return (1+sol[stramos[k]]); else
return (1+numar(stramos[k]));
}
int main()
{
int i,x,y;
ifstream fin("cerere.in");
fin>>n;
for (i=1; i<=n; i++)
{
fin>>a[i];
stramos[i]=i; sol[i]=-1;
}
for (i=1; i<=n; i++)
{
fin>>x>>y;
tata[y]=x;
}
calc_stramos();
for (i=1; i<=n; i++)
if (sol[i]==-1)
sol[i]=numar(i);
ofstream fout("cerere.out");
for (i=1; i<=n; i++)
fout<<sol[i]<<" ";
fin.close();
fout.close();
return 0;
}