Submission
Status:
(PPPPPPPPP)(PPPP)(PPTSSS)(SSSSSSSSSS)
Subtask/Task Score:
{25/25}{25/25}{0/20}{0/30}
Score: 50
User: august
Problemset: เดินทางข้ามชุมชน
Language: cpp
Time: 1.096 second
Submitted On: 2026-03-10 20:26:01
#include <bits/stdc++.h>
using namespace std;
int fnd(int u, vector<int> &par) {
if (u == par[u]) return u;
return par[u] = fnd(par[u], par);
}
int main() {
cin.tie(0)->sync_with_stdio(0);
int n,m,q;
cin>> n>> m>> q;
vector<pair<int,pair<int,int>>> g;
for (int i=0; i<m; i++) {
int u,v,w;
cin>> u>> v>> w;
g.push_back({w, {u,v}});
}
sort(g.begin(), g.end());
while (q--) {
int s,t,x;
cin>> s>> t>> x;
int l=0, r=m-1;
while (l<=r) {
int mid = (l+r)/2;
if (g[mid].first <= x) l=mid+1;
else r=mid-1;
}
l--;
vector<int> par(n);
iota(par.begin(), par.end(), 0);
for (int i=0; i<=l; i++) {
int u=g[i].second.first, v=g[i].second.second, w=g[i].first;
int a=fnd(u, par);
int b=fnd(v, par);
if (a != b) par[a] = b;
}
for (int i=0; i<n; i++) fnd(i, par);
if (par[s] == par[t]) cout<< "Yes\n";
else cout<< "No\n";
}
}