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;
}