Submission

Status:

(PPPPTSSSS)(SSSS)(PPxSSS)(SSSSSSSSSS)

Subtask/Task Score:

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

Score: 0

User: C12

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

Language: cpp

Time: 1.091 second

Submitted On: 2026-01-04 22:41:16

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

#define f first
#define s second
#define pii pair<ll,ll>
#define puii pair<ull,ull>
#define piii pair<ll,pii>
#define ll long long
#define ull unsigned long long
#define mp make_pair
 
#define mpiii(a,b,c) make_pair(a,make_pair(b,c));
// ll mod = 1000000007;

ll n,m,q;
ll a,b,k;
unordered_map<ll,unordered_map<ll,ll>> adj_matrix;

void solving(){

}

void solve(){

    cin >> n >> m >> q;

    for(int i = 0;i < m;i++){
        cin >> a >> b >> k;


        adj_matrix[a][a] = 0;
        adj_matrix[b][b] = 0;

        adj_matrix[a][b] = k;
        adj_matrix[b][a] = k;
        
    }

    queue<pii>que;
    ll t,cost,ncost;

    // cout << '\n';
    for(int i = 0;i < n;i++){
        for(auto x:adj_matrix[i]){
            que.push(mp(x.f,adj_matrix[x.f][i]));
            // cout << x << ' ' << i << ' ' << adj_matrix[x][i] << ' ' << adj_matrix[x][i] << '\n';
        }
        // cout << '\n';
        while(!que.empty()){
            t = que.front().f;
            cost = que.front().s;
            que.pop();
            for(auto x:adj_matrix[t]){
                if(x.f == i) continue;
                ncost = max(cost,adj_matrix[x.f][t]);

                if(adj_matrix[x.f].find(i) == adj_matrix[x.f].end()){
                    adj_matrix[x.f][i] = LLONG_MAX;
                }
                if(adj_matrix[i].find(x.f) == adj_matrix[i].end()){
                    adj_matrix[i][x.f] = LLONG_MAX;
                }
                
                if(ncost < adj_matrix[x.f][i] || ncost < adj_matrix[i][x.f]){
                    adj_matrix[x.f][i] = ncost;
                    adj_matrix[i][x.f] = ncost;
                    que.push(mp(x.f,ncost));
                }
                // cout << x << ' ' << i << ' ' << ncost << ' ' << adj_matrix[x][i] << '\n';
            }
        }
        // return;
    }

    // cout << '\n';
    // for(int i = 0;i < n;i++){
    //     for(int j = 0;j < n;j++){
    //         if(adj_matrix[i].find(j) != adj_matrix[i].end()){
    //             cout << i << ' ' << j << ' ' << adj_matrix[i][j];
    //         }
    //         else{
    //             cout << i << ' ' << j << ' ' << "NO";
    //         }
    //         cout << '\n';
    //     }
    // }

    // return;

    while(q--){
        cin >> a >> b >> k;

        if(adj_matrix[a].find(b) != adj_matrix[a].end() && k >= adj_matrix[a][b]){
            cout << "Yes";
        }
        else{
            cout << "No";
        }

        cout << '\n';
    }

    return;
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    ll q;
 
    // cin >> q;

    // while(q--)
        solve(); 

    return 0;
}
/*
6 8 1 4
4 7 6 2 5 3
1
3
6
1
4
6
5
3


*/