Submission
Status:
(-SSSSSSSS)(SSSS)(-SSSSS)(SSSSSSSSSS)
Subtask/Task Score:
{0/25}{0/25}{0/20}{0/30}
Score: 0
User: august
Problemset: เดินทางข้ามชุมชน
Language: cpp
Time: 0.003 second
Submitted On: 2025-12-07 12:00:13
#include <bits/stdc++.h>
using namespace std;
int n,m,q;
int fnd(int cur, vector<int> &par) {
if (par[cur] == cur) return cur;
return par[cur] = fnd(par[cur], par);
}
int main() {
cin.tie(0)->sync_with_stdio(0);
cin>> n>> m>> q;
vector<pair<int, 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, {0, {u,v}}});
}
for (int i=0; i<q; i++) {
int a,b,k;
cin>> a>> b>> k;
g.push_back({k, {i+1, {a,b}}});
}
sort(g.begin(), g.end());
vector<int> par(n);
iota(par.begin(), par.end(), 0);
vector<bool> ans(q+1,0);
int cnt=0;
for (int i=0; i<g.size(); i++) {
int u=g[i].second.second.first, v=g[i].second.second.second, query=g[i].second.first, w=g[i].first;
if (!query) {
int a=fnd(u, par);
int b=fnd(v, par);
if (a != b) {
par[a] = b;
}
}
else {
ans[query] = fnd(u, par)==fnd(v, par);
}
}
for (int i=1; i<=q; i++) cout<< (ans[i] ? "YES\n" : "NO\n");
}