Submission #1312038

#TimeUsernameProblemLanguageResultExecution timeMemory
1312038shebDrivers (BOI24_drivers)C++20
0 / 100
1 ms572 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

const string yes = "TAIP";
const string no = "NE";

int32_t main() {
    int n, e, q;cin>>n>>e>>q;
    vector<pair<int, int>> M[n];
        for (int i = 0; i < e; i++) {
            int a, b, k;cin>>a>>b>>k;a--,b--;
            M[a].push_back(make_pair(b, k));
            M[b].push_back(make_pair(a, k));
        }
    vector<string> ANS;
    
    for (int i = 0; i < q; i++) {
        int a, b, k;cin>>a>>b>>k;a--,b--;
        vector<int> D(n, LLONG_MAX);D[a]=0;
        priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> PQ;PQ.emplace(0,a);
        while (!PQ.empty()) {
            pair<int, int> top = PQ.top();PQ.pop();
            if (top.first > D[top.second])
                continue;
            
            for (pair<int, int> &p: M[top.second]) {
                if (D[top.second] + p.second < D[p.first]) {
                    D[p.first] = D[top.second] + p.second;   
                    PQ.emplace(D[p.first], p.first);
                }
            }
        }
        ANS.push_back((D[b] <= k)? yes: no);
    }
    for (string &s: ANS)
        cout << s << '\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...