Submission
Status:
(PPPPPPPPP)(PPPP)(PPPPPP)(PPPPPPPPPP)
Subtask/Task Score:
{25/25}{25/25}{20/20}{30/30}
Score: 100
User: august
Problemset: เดินทางข้ามชุมชน
Language: cpp
Time: 0.139 second
Submitted On: 2026-03-10 20:45:51
#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());
vector<int> par(n);
iota(par.begin(), par.end(), 0);
vector<pair<pair<int,int>,pair<int,int>>> query(q);
for (int i=0; i<q; i++) cin>> query[i].second.first>> query[i].second.second>> query[i].first.first, query[i].first.second = i;
sort(query.begin(), query.end());
vector<bool> ans(q, 0);
int i=0;
for (int j=0; j<q; j++) {
int s=query[j].second.first, t=query[j].second.second, k=query[j].first.first;
while (i<m && g[i].first <= k) {
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;
i++;
}
int id = query[j].first.second;
if (fnd(par[s], par) == fnd(par[t], par)) ans[id] = 1;
}
for (int i=0; i<q; i++) cout<< (ans[i] ? "Yes" : "No")<< '\n';
}