Submission

Status:

(PPPPPPPPP)(PPPP)(PPPPPP)(PPPPPPPPPP)

Subtask/Task Score:

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

Score: 100

User: hmmm

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

Language: cpp

Time: 0.167 second

Submitted On: 2025-06-24 11:16:00

#include<bits/stdc++.h>
using namespace std;
using pii=array<int,4>;
const int N=1e5+5;
vector<pii> p;
int pa[N],ans[N*3];

inline int find(int v){
	if(pa[v]==v) return v;
	return pa[v]=find(pa[v]);
}

inline void U(int a,int b){
	a=find(a);
	b=find(b);
	if(a!=b) pa[b]=a;
}

int main(){
	ios::sync_with_stdio(0); cin.tie(0);
	int n,m,k;
	cin >> n >> m >> k;
	for(int i=0;i<=n;i++) pa[i]=i;
	for(int i=1;i<=m;i++){
		int u,v,w;
		cin >> u >> v >> w;
		p.push_back({w,-1,u,v});
	}
	for(int i=1;i<=k;i++){
		int u,v,w;
		cin >> u >> v >> w;
		p.push_back({w,i,u,v});
	}
	sort(p.begin(),p.end());
	for(auto e:p){
		auto u=e[2];
		auto v=e[3];
		auto w=e[0];
		auto i=e[1];
//		cout << u << ' ' << v << ' ' << w << ' ' << i << "\n";
		if(i==-1){
			U(u,v);
		}
		else{
			if(find(u)==find(v)) ans[i]=true;
			else ans[i]=false;
		}
	}
	for(int i=1;i<=k;i++){
		if(ans[i]) cout << "Yes\n";
		else cout << "No\n";
	}
}