#include #include #include"testlib.h" using namespace std; using ll = long long; const ll Nmin = 2, Nmax = 200; const ll Kmin = 1, Kmax = 200'000; const ll Cmin = 0, Cmax = 1'000'000'000; const ll Qmin = 1, Qmax = 100'000; const ll Tmin = 1, Tmax = 2; int main(){ registerValidation(); ll n = inf.readLong(Nmin,Nmax); inf.readSpace(); const ll Mmax = n*(n-1)/2; ll m = inf.readLong(1LL,Mmax); inf.readSpace(); ll k = inf.readLong(Kmin,Kmax); inf.readEoln(); for (ll i = 0; i <= k; i++){ if (i != 0){ inf.readSpace(); } inf.readLong(1LL,n); } inf.readEoln(); set> st; atcoder::dsu d(n); for (ll i = 0; i < m; i++){ ll a = inf.readLong(1LL,n); inf.readSpace(); ll b = inf.readLong(1LL,n); inf.readSpace(); inf.readLong(Cmin,Cmax); inf.readEoln(); ensuref(a < b, "A[i] < B[i]"); st.insert(pair(a,b)); a--, b--; d.merge(a,b); } ensuref((ll)(st.size()) == m, "(A[i],B[i]) are must be distinct"); ensuref((ll)(d.size(0)) == n, "graph must be connected"); ll q = inf.readLong(Qmin,Qmax); inf.readEoln(); bool t2_done = false; for (ll i = 0; i < q; i++){ ll t = inf.readLong(Tmin,Tmax); inf.readSpace(); if (t == 1){ ll x = inf.readLong(0LL,k); inf.readSpace(); ll y = inf.readLong(1LL,n); inf.readEoln(); } else { t2_done = true; ll x = inf.readLong(0LL,k); inf.readSpace(); ll y = inf.readLong(0LL,k); inf.readEoln(); ensuref(x <= y, "x <= y"); } } ensuref(t2_done, "T = 2 did not come"); inf.readEof(); }