Submission

Status:

(P-SSSSSSS)(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: 2026-03-10 20:28:20

#include <bits/stdc++.h>
using namespace std;

int fnd(int u, vector<int> &par) {
    if (u == par[u]) return u;
    return par[u] = fnd(par[u], par);
}

int main() {
    cin.tie(0)->sync_with_stdio(0);
    int n,m,q;
    cin>> n>> m>> q;

    vector<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, {u,v}});
    }

    sort(g.begin(), g.end());

    while (q--) {
        int s,t,x;
        cin>> s>> t>> x;

        int l=0, r=m-1; 
        while (l<=r) {
            int mid = (l+r)/2;

            if (g[mid].first <= x) l=mid+1;
            else r=mid-1;
        }
        l--;

        vector<int> par(n);
        iota(par.begin(), par.end(), 0);

        for (int i=0; i<=l; i++) {
            int u=g[i].second.first, v=g[i].second.second, w=g[i].first;

            int a=fnd(u, par);
            int b=fnd(v, par);

            if (a != b) par[a] = b;
            fnd(a, par);
            fnd(b,par);
            fnd(u, par);
            fnd(v,par);
        }
        

        if (par[s] == par[t]) cout<< "Yes\n";
        else cout<< "No\n";
    }
}