// 部分点1 // 全探索+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 B; B.push_back(0); 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}); B.push_back(w); } sort(B.begin(),B.end()); for(int k=0; k>s>>c; s--; bool exist=false; for(int i=0; i 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]){ visited[nex]=true; flag[A[nex]]=true; que.push(nex); } } } int t=0; for(int l=0; l=c){ exist=true; cout<