// 部分点5 // 並列二分探索+クラスカル #include #include using namespace std; using namespace atcoder; int main(){ int N,M,Q; cin>>N>>M>>Q; vector A(N); for(int i=0; i>A[i]; A[i]--; } vector> B; vector U(M),V(M),W(M); for(int j=0; j>U[j]>>V[j]>>W[j]; U[j]--,V[j]--; B.push_back({W[j],j}); } sort(B.begin(),B.end()); vector S(Q),C(Q); for(int k=0; k>S[k]>>C[k]; S[k]--; } vector ok(Q,M),ng(Q,-1); while(true){ vector> mid(M); bool fin=true; for(int k=0; k1){ fin=false; int m=(ok[k]+ng[k])/2; mid[m].push_back(k); } } if(fin)break; dsu UF(N); for(int j=0; j=C[k]){ ok[k]=j; }else{ ng[k]=j; } } } } for(int k=0; k