Submission
Status:
(PPPPPPPPP)(PPPP)(PPPPPP)(PPPPPPPPPP)
Subtask/Task Score:
{25/25}{25/25}{20/20}{30/30}
Score: 100
User: meme_boi2
Problemset: เดินทางข้ามชุมชน
Language: cpp
Time: 0.146 second
Submitted On: 2026-03-19 16:33:43
#include <bits/stdc++.h>
using namespace std;
#define tii tuple<int,int,int>
vector<int> pa(1e5+1), dist(1e5+1,0);
priority_queue <tii,vector<tii>,greater<tii>> pq;
bool comp(array<int,4> a,array<int,4> b){
return a[2] < b[2];
}
int find(int i){
if(pa[i] == i) return i;
else return pa[i] = find(pa[i]);
}
void U(int u, int v){
u = find(u); v = find(v);
if(u < v){
pa[v] = u;
dist[u] = max(dist[u],dist[v]);
}else{
pa[u] = v;
dist[u] = max(dist[u],dist[v]);
}
}
int32_t main(){
cin.tie(nullptr)->sync_with_stdio(0);
int n, m, q;
cin >> n >> m >> q;
for(int i = 0; i < n; i++) pa[i] = i;
while(m--){
int u, v, w;
cin >> u >> v >> w;
pq.push({w,u,v});
}
vector<array<int,4>> query(q);
vector<int> ans(q);
for(int i = 0; i < q; i++){
cin >> query[i][0] >> query[i][1] >> query[i][2];
query[i][3] = i;
}
sort(query.begin(),query.end(),comp);
for(int i = 0; i < q; i++){
while(!pq.empty()){
auto [w,u,v] = pq.top();
if(w > query[i][2]) break;
pq.pop();
U(u,v);
}
if(find(query[i][0]) == find(query[i][1])){
ans[query[i][3]] = 1;
}else{
ans[query[i][3]] = 0;
}
}
for(int i = 0; i < q; i++){
if(ans[i] == 1){
cout << "Yes\n";
}else{
cout << "No\n";
}
}
}
/*
c2_su64_towntravel
cd "c:\Users\RICOH-NB110\Desktop\Computer Programing\gchan\" ; if ($?) { g++ c2_su64_towntravel.cpp -o c2_su64_towntravel } ; if ($?) { .\c2_su64_towntravel}
*/