Submission
Status:
(P-SSSSSSS)(SSSS)(-SSSSS)(SSSSSSSSSS)
Subtask/Task Score:
{0/25}{0/25}{0/20}{0/30}
Score: 0
User: august
Problemset: เดินทางข้ามชุมชน
Language: cpp
Time: 0.002 second
Submitted On: 2026-03-10 20:28:20
#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;
fnd(a, par);
fnd(b,par);
fnd(u, par);
fnd(v,par);
}
if (par[s] == par[t]) cout<< "Yes\n";
else cout<< "No\n";
}
}