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.002 second

Submitted On: 2025-12-07 17:08:36

#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+1);
	iota(par.begin(), par.end(), 0);
	
	vector<bool> ans(q+1,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");
}