// 部分点2 // 二分探索+BFS #include using namespace std; int main(){ int N,M,Q; cin>>N>>M>>Q; vector A(N); for(int i=0; i>A[i]; A[i]--; } vector>> G(N); for(int j=0; j>u>>v>>w; u--,v--; G[u].push_back({v,w}); G[v].push_back({u,w}); } for(int k=0; k>s>>c; s--; int ok=1e9+1,ng=-1; while(ok-ng>1){ int D=((long long)ok+ng)/2; vector visited(N,0); // 頂点を管理 vector flag(N,0); // 系列を管理 visited[s]=true; flag[A[s]]=true; queue que; que.push(s); while(!que.empty()){ int m=que.front(); que.pop(); for(auto [nex,w]:G[m]){ if(w<=D && visited[nex]==false){ visited[nex]=true; flag[A[nex]]=true; que.push(nex); } } } int t=0; for(int l=0; l=c){ ok=D; }else{ ng=D; } } if(ok==1e9+1)cout<<-1<