Submission

Status:

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

Subtask/Task Score:

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

Score: 100

User: 12345678

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

Language: cpp

Time: 0.141 second

Submitted On: 2025-11-28 09:15:25

#include <bits/stdc++.h>

using namespace std;

const int nx=3e5+5;

int n, m, q, u, v, w, dsu[nx], res[nx];
vector<tuple<int, int, int, int>> d;

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<n; i++) dsu[i]=i;
    for (int i=0; i<m; i++) cin>>u>>v>>w, d.push_back({w, 0, u, v});
    for (int i=1; i<=q; i++) cin>>u>>v>>w, d.push_back({w, i, u, v});
    sort(d.begin(), d.end());
    for (auto [w, idx, u, v]:d)
    {
        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":"No")<<'\n';
}