#include<bits/stdc++.h>
#define MAXN 100007
using namespace std;
int n,a,b,c[MAXN];
vector<int> v[MAXN];
vector<int> sp[MAXN][2][2];
vector<bool> us[MAXN][2][2];
int dp[MAXN][2][2],ans;
bool li[MAXN][2][2];
int ff(int x,int p,int fx,int fp);
int ff2(int x,int p,int ost,int d,int id);
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n-1;i++){
cin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
for(int f=0;f<2;f++){
for(int k=0;k<2;k++){
sp[a][f][k].push_back(0); sp[b][f][k].push_back(0);
us[a][f][k].push_back(false); us[b][f][k].push_back(false);
}
}
}
for(int i=1;i<=n;i++){
cin>>c[i];
}
ans=min(ff(1,0,0,0),ff(1,0,1,0)+1);
if(ans>=1000000){
cout<<"impossible\n";
}else{
cout<<ans<<"\n";
}
return 0;
}
int ff(int x,int p,int fx,int fp){
if(v[x].size()==1 and p!=0){
if((c[x]^(fx^fp))==0)return 0;
else return 1000000;
}
if(li[x][fx][fp])return dp[x][fx][fp];
li[x][fx][fp]=true;
dp[x][fx][fp]=ff2(x,p,(c[x]^(fx^fp)),fx,v[x].size()-1);
return dp[x][fx][fp];
}
int ff2(int x,int p,int ost,int fp,int id){
if(id==-1 and ost==0)return 0;
else if(id==-1)return 1000000;
if(us[x][ost][fp][id])return sp[x][ost][fp][id];
us[x][ost][fp][id]=true;
if(v[x][id]==p)sp[x][ost][fp][id]=ff2(x,p,ost,fp,id-1);
else sp[x][ost][fp][id]=min( ff2(x,p,ost,fp,id-1)+ff(v[x][id],x,0,fp) , ff2(x,p,(ost^1),fp,id-1)+ff(v[x][id],x,1,fp)+1 );
return sp[x][ost][fp][id];
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
13 ms |
27732 KB |
Output is correct |
2 |
Correct |
16 ms |
27732 KB |
Output is correct |
3 |
Correct |
17 ms |
27732 KB |
Output is correct |
4 |
Correct |
13 ms |
27732 KB |
Output is correct |
5 |
Correct |
13 ms |
27624 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
13 ms |
27732 KB |
Output is correct |
2 |
Correct |
16 ms |
27732 KB |
Output is correct |
3 |
Correct |
17 ms |
27732 KB |
Output is correct |
4 |
Correct |
13 ms |
27732 KB |
Output is correct |
5 |
Correct |
13 ms |
27624 KB |
Output is correct |
6 |
Correct |
15 ms |
27684 KB |
Output is correct |
7 |
Correct |
17 ms |
27732 KB |
Output is correct |
8 |
Correct |
14 ms |
27748 KB |
Output is correct |
9 |
Correct |
15 ms |
27732 KB |
Output is correct |
10 |
Correct |
14 ms |
27708 KB |
Output is correct |
11 |
Correct |
14 ms |
27748 KB |
Output is correct |
12 |
Correct |
13 ms |
27732 KB |
Output is correct |
13 |
Correct |
15 ms |
27732 KB |
Output is correct |
14 |
Correct |
13 ms |
27732 KB |
Output is correct |
15 |
Correct |
16 ms |
27740 KB |
Output is correct |
16 |
Correct |
13 ms |
27732 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
347 ms |
75180 KB |
Output is correct |
2 |
Correct |
265 ms |
74568 KB |
Output is correct |
3 |
Correct |
258 ms |
75508 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
248 ms |
75204 KB |
Output is correct |
2 |
Correct |
255 ms |
74688 KB |
Output is correct |
3 |
Correct |
252 ms |
75452 KB |
Output is correct |
4 |
Correct |
256 ms |
54992 KB |
Output is correct |
5 |
Correct |
321 ms |
57548 KB |
Output is correct |
6 |
Correct |
277 ms |
58240 KB |
Output is correct |
7 |
Correct |
18 ms |
27860 KB |
Output is correct |
8 |
Correct |
122 ms |
37956 KB |
Output is correct |
9 |
Correct |
312 ms |
57904 KB |
Output is correct |
10 |
Correct |
329 ms |
58464 KB |
Output is correct |
11 |
Correct |
284 ms |
59204 KB |
Output is correct |
12 |
Correct |
303 ms |
60340 KB |
Output is correct |
13 |
Correct |
290 ms |
56360 KB |
Output is correct |
14 |
Correct |
300 ms |
58232 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
13 ms |
27732 KB |
Output is correct |
2 |
Correct |
16 ms |
27732 KB |
Output is correct |
3 |
Correct |
17 ms |
27732 KB |
Output is correct |
4 |
Correct |
13 ms |
27732 KB |
Output is correct |
5 |
Correct |
13 ms |
27624 KB |
Output is correct |
6 |
Correct |
15 ms |
27684 KB |
Output is correct |
7 |
Correct |
17 ms |
27732 KB |
Output is correct |
8 |
Correct |
14 ms |
27748 KB |
Output is correct |
9 |
Correct |
15 ms |
27732 KB |
Output is correct |
10 |
Correct |
14 ms |
27708 KB |
Output is correct |
11 |
Correct |
14 ms |
27748 KB |
Output is correct |
12 |
Correct |
13 ms |
27732 KB |
Output is correct |
13 |
Correct |
15 ms |
27732 KB |
Output is correct |
14 |
Correct |
13 ms |
27732 KB |
Output is correct |
15 |
Correct |
16 ms |
27740 KB |
Output is correct |
16 |
Correct |
13 ms |
27732 KB |
Output is correct |
17 |
Correct |
347 ms |
75180 KB |
Output is correct |
18 |
Correct |
265 ms |
74568 KB |
Output is correct |
19 |
Correct |
258 ms |
75508 KB |
Output is correct |
20 |
Correct |
248 ms |
75204 KB |
Output is correct |
21 |
Correct |
255 ms |
74688 KB |
Output is correct |
22 |
Correct |
252 ms |
75452 KB |
Output is correct |
23 |
Correct |
256 ms |
54992 KB |
Output is correct |
24 |
Correct |
321 ms |
57548 KB |
Output is correct |
25 |
Correct |
277 ms |
58240 KB |
Output is correct |
26 |
Correct |
18 ms |
27860 KB |
Output is correct |
27 |
Correct |
122 ms |
37956 KB |
Output is correct |
28 |
Correct |
312 ms |
57904 KB |
Output is correct |
29 |
Correct |
329 ms |
58464 KB |
Output is correct |
30 |
Correct |
284 ms |
59204 KB |
Output is correct |
31 |
Correct |
303 ms |
60340 KB |
Output is correct |
32 |
Correct |
290 ms |
56360 KB |
Output is correct |
33 |
Correct |
300 ms |
58232 KB |
Output is correct |
34 |
Correct |
14 ms |
27644 KB |
Output is correct |
35 |
Correct |
13 ms |
27668 KB |
Output is correct |
36 |
Correct |
14 ms |
27732 KB |
Output is correct |
37 |
Correct |
19 ms |
27644 KB |
Output is correct |
38 |
Correct |
18 ms |
27732 KB |
Output is correct |
39 |
Correct |
13 ms |
27728 KB |
Output is correct |
40 |
Correct |
19 ms |
27748 KB |
Output is correct |
41 |
Correct |
18 ms |
27656 KB |
Output is correct |
42 |
Correct |
14 ms |
27732 KB |
Output is correct |
43 |
Correct |
13 ms |
27732 KB |
Output is correct |
44 |
Correct |
13 ms |
27732 KB |
Output is correct |
45 |
Correct |
247 ms |
75216 KB |
Output is correct |
46 |
Correct |
248 ms |
74564 KB |
Output is correct |
47 |
Correct |
255 ms |
75452 KB |
Output is correct |
48 |
Correct |
249 ms |
54988 KB |
Output is correct |
49 |
Correct |
284 ms |
57560 KB |
Output is correct |
50 |
Correct |
278 ms |
58276 KB |
Output is correct |
51 |
Correct |
17 ms |
27888 KB |
Output is correct |
52 |
Correct |
98 ms |
38024 KB |
Output is correct |
53 |
Correct |
278 ms |
57940 KB |
Output is correct |
54 |
Correct |
277 ms |
58420 KB |
Output is correct |
55 |
Correct |
286 ms |
59156 KB |
Output is correct |
56 |
Correct |
290 ms |
60204 KB |
Output is correct |
57 |
Correct |
250 ms |
56336 KB |
Output is correct |
58 |
Correct |
277 ms |
58112 KB |
Output is correct |
59 |
Correct |
81 ms |
37836 KB |
Output is correct |
60 |
Correct |
244 ms |
55252 KB |
Output is correct |
61 |
Correct |
282 ms |
57888 KB |
Output is correct |
62 |
Correct |
322 ms |
58576 KB |
Output is correct |
63 |
Correct |
280 ms |
58764 KB |
Output is correct |
64 |
Correct |
278 ms |
58540 KB |
Output is correct |
65 |
Correct |
191 ms |
60848 KB |
Output is correct |
66 |
Correct |
226 ms |
60944 KB |
Output is correct |
67 |
Correct |
190 ms |
67732 KB |
Output is correct |
68 |
Correct |
183 ms |
67632 KB |
Output is correct |
69 |
Correct |
188 ms |
67724 KB |
Output is correct |
70 |
Correct |
172 ms |
67784 KB |
Output is correct |