Submission
Status:
(PPPPPPPPP)(PPPP)(PPxSSS)(SSSSSSSSSS)
Subtask/Task Score:
{25/25}{25/25}{0/20}{0/30}
Score: 50
User: C12
Problemset: เดินทางข้ามชุมชน
Language: cpp
Time: 0.117 second
Submitted On: 2026-01-22 11:20:13
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define pii pair<ll,ll>
#define puii pair<ull,ull>
#define piii pair<ll,pii>
#define ll long long
#define ull unsigned long long
#define mp make_pair
#define mpiii(a,b,c) make_pair(a,make_pair(b,c));
int32_t mod = 1e9+7;
ll p[100 * 1001] = {0};
bool ans[200 * 1001] = {0};
vector<tuple<ll,ll,ll,ll>>edge;
ll dsu(ll i){
// if(p[i] != i) p[i] = dsu(p[i]);
// return p[i];
while(p[i] != i){
p[i] = p[p[i]];
i = p[i];
}
return i;
}
void solve(){
ll n,m,q;
ll u,v,w,idx;
tuple<ll,ll,ll,ll> x;
cin >> n >> m >> q;
for(ll i = 0;i <= n;i++){
p[i] = i;
}
for(ll i = 0;i < m;i++){
cin >> u >> v >> w;
if(u > v) swap(u,v);
edge.push_back(make_tuple(w,-1,u,v));
}
for(ll i = 0;i < q;i++){
cin >> u >> v >> w;
if(u > v) swap(u,v);
edge.push_back(make_tuple(w,i,u,v));
}
sort(edge.begin(),edge.end());
for(ll i = 0;i < edge.size();i++){
x = edge[i];
w = get<0>(x);
idx = get<1>(x);
u = get<2>(x);
v = get<3>(x);
if(idx != -1){
ans[idx] = (p[dsu(u)] == p[dsu(v)]);
}
else if(p[dsu(u)] != p[dsu(v)]){
p[dsu(u)] = p[dsu(v)];
}
}
for(ll i = 0;i < q;i++){
if(ans[i]) cout << "Yes\n";
else cout << "No\n";
}
return;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
// ll q;
// cin >> q;
// while(q--)
solve();
return 0;
}
/*
100 5 2
1 2 3
2 1 1
1 4 2
5 2
*/