Submission

Status:

(PPPPPPPPP)(PPPP)(PPTSSS)(SSSSSSSSSS)

Subtask/Task Score:

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

Score: 50

User: kittipos

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

Language: cpp

Time: 1.094 second

Submitted On: 2026-03-10 22:22:13

#include <bits/stdc++.h>

using namespace std;

vector<vector<pair<int, int>>> graph; // destination and distance
vector<bool> visited;

bool dfs(int cur, int des, int max_weight) {
    if (cur == des) return true;
    
    if (visited[cur]) return false;
    // cout << "cur: " << cur << endl;

    visited[cur] = true;

    for (int i = 0; i < graph[cur].size(); i++) {
        if (graph[cur][i].second > max_weight) continue;
        bool res = dfs(graph[cur][i].first, des, max_weight);
        if (res) return true;
    }
    return false;
}

int main() {
    int n, m, q;
    cin >> n >> m >> q;
    graph.assign(n, vector<pair<int, int>>());
    for (int i = 0; i < m; i++) {
        int a, b, c;
        cin >> a >> b >> c;
        // a--; b--;
        graph[a].push_back({b, c});
        graph[b].push_back({a, c});
    }

    for (int i = 0; i < q; i++) {
        int a, b, k;
        cin >> a >> b >> k;
        visited.assign(n, false);
        bool res = dfs(a, b, k);
        if (res) {
            cout << "Yes\n";
        } else {
            cout << "No\n";
        }
    }
}