#include"testlib.h" #include #include using namespace std; using ll = long long; const ll Nmin = 1, Nmax = 200'000; const ll Cmin = 0, Cmax = 1; const ll Qmin = 1, Qmax = 200'000; const ll Tmin = 1, Tmax = 2; int main(){ registerValidation(); ll N = inf.readLong(Nmin, Nmax); inf.readEoln(); atcoder::dsu d(N); for (ll i = 1; i <= N-1; i++){ ll a = inf.readLong(1LL, N); a--; inf.readSpace(); ll b = inf.readLong(1LL, N); b--; inf.readEoln(); inf.ensuref(a < b, "a < b"); inf.ensuref(!d.same(a, b), "graph is tree"); d.merge(a, b); } for (ll i = 1; i <= N; i++){ if (i != 1){ inf.readSpace(); } inf.readLong(Cmin, Cmax); } inf.readEoln(); ll Q = inf.readLong(Qmin, Qmax); inf.readEoln(); for (ll i = 1; i <= Q; i++){ ll t = inf.readLong(Tmin, Tmax); inf.readSpace(); if (t == 1){ inf.readLong(1LL, N); } else if (t == 2){ inf.readLong(1LL, N); inf.readSpace(); inf.readLong(1LL, N); } inf.readEoln(); } inf.readEof(); return 0; }