#include #include #include #include #include #define MAXN 500001 using namespace std; vector galezie[MAXN]; bitset odw; bitset strajk; /* void ilosc_poddrzew(int a) { int wynik = 0; bool x = 0; for(int i = 1; i <= a; i++) { if(strajk[i] && galezie[i].size() > 1) { for(int j = 0; j < galezie[i].size(); j++) { //printf("%d ",galezie[i][j]); if(strajk[galezie[i][j]] == 0) wynik++; /*if(x == 0) { wynik--; x++; }// } } if(galezie[i].size() == 1 && wynik == 0 && strajk[i]) wynik++; } printf("%d\n",wynik); } */ int main() { int n, x, y, m, pomoc_strajki; int wynik = 1; scanf("%d",&n); for(int i = 1; i < n; i++) { scanf("%d%d",&x,&y); galezie[x].push_back(y); galezie[y].push_back(x); } scanf("%d",&m); for(int i = 0; i < m; i++) { scanf("%d",&pomoc_strajki); if(pomoc_strajki > 0) strajk[pomoc_strajki].flip(); else strajk[pomoc_strajki * -1].flip(); if(pomoc_strajki > 0) { wynik--; for(int j = 0; j < galezie[pomoc_strajki].size(); j++) if(strajk[galezie[pomoc_strajki][j]] == 0) wynik++; } else { wynik++; for(int j = 0; j < galezie[-1 *pomoc_strajki].size(); j++) if(strajk[galezie[-1 * pomoc_strajki][j]] == 0) wynik--; } //ilosc_poddrzew(n); printf("%d",wynik); } }