Submission
Status:
(PPPPPPPPP)(PPPP)(PP-SSS)(SSSSSSSSSS)
Subtask/Task Score:
{25/25}{25/25}{0/20}{0/30}
Score: 50
User: C12
Problemset: เดินทางข้ามชุมชน
Language: cpp
Time: 0.111 second
Submitted On: 2026-03-19 21:37:37
#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9+7;
#define ll long long
#define pii pair<ll,int>
vector<tuple<int,int,int,int>> edge(500001);
vector<int>p(100001);
vector<int>out(300001);
int dsu(int i,vector<int> &p){
if(p[i] != i){
p[i] = dsu(p[i],p);
}
return p[i];
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,m,q;
cin >> n >> m >> q;
n++;
int u,v,w;
for(int i = 0;i < m;i++){
cin >> u >> v >> w;
if(u > v) swap(u,v);
edge[i] = (make_tuple(w,0,u,v));
}
for(int i = 1;i <= q;i++){
cin >> u >> v >> w;
edge[i+m-1] = (make_tuple(w,i,u,v));
}
sort(edge.begin(),edge.begin()+m+q);
for(int i = 0;i <= n;i++) p[i] = i;
for(int i = 0;i < n+q;i++){
int w = get<0>(edge[i]);
int ques = get<1>(edge[i]);
int u = get<2>(edge[i]);
int v = get<3>(edge[i]);
if(ques){
if(dsu(u,p) != dsu(v,p)){
out[ques] = 0;
}
else{
out[ques] = 1;
}
// cout << ques << '\n';
}
else{
if(dsu(u,p) != dsu(v,p)){
p[dsu(u,p)] = p[dsu(v,p)];
}
}
}
for(int i = 1;i <= q;i++) {
if(out[i]){
cout << "Yes\n";
}
else{
cout << "No\n";
}
}
return 0;
}