# include using namespace std; const int maxn = 1000005; bool t[maxn]; vector p[maxn]; bool vis[maxn]; vector g[1005]; int l[1005][1005]; int br[1005]; int w[1005]; int num = 1; void dfs(int v, int last) { vis[v] = 1; int i,j; if(t[v]==1) { num++; g[last].push_back(num); last = num; } else { if(v!=1) br[last]++; } for(i=0;ib)return a; return b; } void calc(int v) { int i; w[v] = 1; l[v][1] = br[v]; if(v==1)l[v][0]=br[v]; int p,q; for(i=0;i>n; char ch; for(i=1;i>a>>b; p[a].push_back(b); p[b].push_back(a); } for(i=2;i<=n;i++) { cin>>ch; t[i]=ch-'0'; } dfs(1,1); /* for(i=1;i<=num;i++) { cout<