Cod sursa(job #773290)
Utilizator | Moraru Valentina valentina506 | Data | 1 august 2012 13:07:30 |
---|---|---|---|
Problema | Cerere | Scor | 50 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.58 kb |
#include<fstream>
using namespace std;
int n,i,j,t[100001],uz[100001],x,y,c[100001];
int df(int x)
{
int i,tx,xi;
if(uz[x]>0)
return uz[x];
else
if(c[x]==0||t[x]==0||x==0)
return 0;
else
{
xi=x;
i=c[x];
while(i--)
x=t[x];
uz[xi]=uz[xi]+df(x)+1;
return uz[xi];
}
}
int main()
{
ifstream f("cerere.in");
ofstream g("cerere.out");
f>>n;
for(i=1;i<=n;++i)
f>>c[i];
for(i=1;i<n;++i)
{
f>>x>>y;
t[y]=x;
}
for(i=1;i<=n;++i)
{
if(c[i]&&t[i]&&!uz[i])
df(i);
g<<uz[i]<<" ";
}
return 0;
}