Submission

Status:

(PPPPPPPPP)(PPPP)(PPxSSS)(SSSSSSSSSS)

Subtask/Task Score:

{25/25}{25/25}{0/20}{0/30}

Score: 50

User: mantaggez

Problemset: เดินทางข้ามชุมชน

Language: cpp

Time: 0.176 second

Submitted On: 2025-12-07 11:43:37

#include <bits/stdc++.h>

using namespace std;

const int nx = 1e5+5;

#define tup tuple<int, int, int, int>

int n, m, q, u, v, w, dsu[nx];
bool res[nx];
vector<tup> adj;

int find(int x)
{
	if(dsu[x] == x) return x;
	dsu[x] = find(dsu[x]);
	return 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;
}