Submission
Status:
(-SSSSSSSS)(SSSS)(-SSSSS)(SSSSSSSSSS)
Subtask/Task Score:
{0/25}{0/25}{0/20}{0/30}
Score: 0
User: Nathako9n
Problemset: เดินทางข้ามชุมชน
Language: cpp
Time: 0.002 second
Submitted On: 2026-01-24 10:56:45
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
const int N = 1e5+5;
int n,m,q,head[N+2];
vector<tuple<ll,ll,ll>>ed;
vector<tuple<ll,ll,ll,int>>que;
bool ans[N+5];
int fh(int i){
if(i==head[i])return i;
return head[i]=fh(head[i]);
}
void uh(int u,int v){
u=fh(u); v=fh(v);
if(u==v)return;
head[u]=v;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n>>m>>q;
for(int i=1;i<=n;i++)head[i]=i;
for(int i=1;i<=m;i++){
int u,v,w;cin>>u>>v>>w;
u++;v++;
ed.emplace_back(w,u,v);
}
sort(ed.begin(),ed.end());
for(int i=1;i<=q;i++){
int u,v,w;cin>>u>>v>>w;
u++;v++;
que.emplace_back(w,u,v,i);
}
sort(que.begin(),que.end());
int i=0;
for(auto[w,u,v,in]:que){
while(i<m&&get<0>(ed[i])<=w){
uh(get<1>(ed[i]),get<2>(ed[i]));
i++;
}
ans[in]=(fh(u)==fh(v));
}
for(int i=1;i<=q;i++){
if(ans[i])cout<<"YES";
else cout<<"NO";
cout<<endl;
}
}
/*
5 5 2
0 1 4
1 3 2
1 2 3
1 4 5
3 4 1
0 4 3
0 4 4
7 8 3
0 1 4
2 5 6
4 2 4
3 1 7
4 1 3
2 1 11
3 5 10
6 5 4
5 3 8
1 6 5
0 6 7
*/