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

*/