Pagini recente » Cod sursa (job #714082) | Cod sursa (job #952526) | Cod sursa (job #2627553) | Cod sursa (job #500600) | Cod sursa (job #3232054)
#include <fstream>
using namespace std;
const int N = 200000;
int k[N + 1];
int t[N + 1];
int n;
bool Found(int &nr)
{
if(k[nr] == 1)
{
nr = t[nr];
return k[nr] == 0;
}
nr = t[t[nr]];
return k[nr] == 0;
}
int main()
{
ifstream in ("cerere.in");
ofstream out("cerere.out");
in >> n;
for(int i = 1; i <= n; i++)
{
in >> k[i];
}
for(int i = 0; i < n - 1; i++)
{
int x, y;
in >> x >> y;
t[y] = x;
}
for(int i = 1; i <= n; i++)
{
if(k[i] == 0)
{
out << 0 << " ";
}
else
{
int nr = 1;
int poz = i;
while(!Found(poz))
{
nr++;
}
out << nr << " ";
}
}
in.close();
out.close();
return 0;
}