#include #include #include "testlib.h" using namespace std; using namespace atcoder; const int Nmin = 2, Nmax = 200; const int Mmin = 1; const int Kmin = 1, Kmax = 200'000; const int Cmin = 0, Cmax = 1'000'000'000; const int Qmin = 1, Qmax = 100'000; int main(){ // validation を始める際に必ず行う registerValidation(); int N = inf.readInt(Nmin, Nmax); inf.readSpace(); const int Mmax = N * (N - 1) / 2; int M = inf.readInt(Mmin, Mmax); inf.readSpace(); int K = inf.readInt(Kmin, Kmax); inf.readEoln(); for(int i = 0; i < K + 1; i++){ inf.readInt(1, N); if(i != K) inf.readSpace(); else inf.readEoln(); } set> Edges; dsu uf(N); for(int i = 0; i < M; i++) { int A = inf.readInt(1, N); inf.readSpace(); int B = inf.readInt(1, N); inf.readSpace(); int C = inf.readInt(Cmin, Cmax); inf.readEoln(); assert(A < B); assert(Edges.find(pair(A, B)) == Edges.end()); Edges.insert(pair(A, B)); uf.merge(A - 1, B - 1); } assert(uf.groups().size() == 1); int Q = inf.readInt(Qmin, Qmax); inf.readEoln(); int Tcount = 0; for(int i = 0; i < Q; i++){ int T = inf.readInt(1, 2); inf.readSpace(); if(T == 1){ inf.readInt(0, K); inf.readSpace(); inf.readInt(1, N); } if(T == 2){ Tcount++; int X = inf.readInt(0, K); inf.readSpace(); inf.readInt(X, K); } inf.readEoln(); } assert(Tcount != 0); inf.readEof(); return 0; }