Submission
Status:
(PPPPPPPPP)(PPPP)(PPPPPP)(PPPPPPPPPP)
Subtask/Task Score:
{25/25}{25/25}{20/20}{30/30}
Score: 100
User: mantaggez
Problemset: เดินทางข้ามชุมชน
Language: cpp
Time: 0.198 second
Submitted On: 2025-12-07 12:10:19
#include <bits/stdc++.h>
using namespace std;
const int nx = 1e5+5;
const int qx = 3e5+5;
#define tup tuple<int, int, int, int>
int n, m, q, u, v, w, dsu[nx];
bool res[qx];
vector<tup> adj;
int find(int x)
{
if(dsu[x] == x) return x;
return dsu[x] = find(dsu[x]);;
}
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
cin >> n >> m >> q;
for(int i=0;i<m;i++)
{
cin >> u >> v >> w;
adj.push_back({w, 0, u, v});
}
for(int i=1;i<=q;i++)
{
cin >> u >> v >> w;
adj.push_back({w, i, u, v});
}
for(int i=0;i<n;i++) dsu[i] = i;
sort(adj.begin(), adj.end());
for(auto [w, idx, u, v] : adj)
{
if(!idx) dsu[find(u)] = find(v);
else res[idx] = (find(u) == find(v));
}
for(int i=1;i<=q;i++)
{
cout << (res[i] ? "Yes\n" : "No\n");
}
return 0;
}