// 部分点6(満点) // Kruskal Reconstruction Tree + Euler Tour + BIT(fenwick tree) + Binary lifting #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> child(2*N,{-1,-1}); vector parent(2*N,-1); vector weight(2*N,0); dsu UF(N); vector comp(N); for(int i=0; i st; st.push(root); vector order(N); while(!st.empty()){ int i=st.top(); st.pop(); if(i L(nodes),R(nodes); for(int i=0; i last(N,-1); vector cnt(nodes); fenwick_tree fw(N); // R[i]が小さい順から見る -> 頂点から出ていく時間が早い順 vector> r(N); for(int i=0; i=c_kとなる祖先vがあるとき、weight[v]が答え // Binary lifting(ダブリング)を使ってvを求める int siz=1; while((1<> up(siz,vector(nodes,-1)); for(int v=0; v>s>>c; s--; if(cnt[s]>=c)cout<<0<