Pagini recente » Cod sursa (job #1779774) | Cod sursa (job #2962248) | Cod sursa (job #1923884) | Cod sursa (job #1417382) | Cod sursa (job #927702)
Cod sursa(job #927702)
#include<cstdio>
#include<fstream>
#include<vector>
#define NMAX 100005
/*
FILE *f=fopen("cerere.in","r");
FILE *g=fopen("cerere.out","w");
*/
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
vector <int> arb[NMAX],C;
int v[NMAX],fat[NMAX],n,sol[NMAX];
int r;
void read( void )
{
f>>n;
for(int i(1); i <= n ; ++i )
f>>v[i];
r=n*(n+1)/2;
for(int i(1); i < n ; ++i )
{
int x,y;
f>>x>>y;
fat[y]=x;
r-=y;
arb[x].push_back(y);
}
f.close();
}
void DFS(int node )
{
C.push_back(node);
if(v[node])
{
sol[node]=sol[C[ C.size()-1 - v[node] ]] +1;
}
for(int i(0); i <arb[node].size(); ++i )
DFS(arb[node][i]);
C.pop_back();
}
void write( void )
{
for(int i(1); i <= n ; ++i )
g<<sol[i];
g.close();
}
int main ( void )
{
read();
DFS(r);
write();
return 0;
}