Submission #1231052

#TimeUsernameProblemLanguageResultExecution timeMemory
1231052ThommyDBDrivers (BOI24_drivers)C++20
0 / 100
2125 ms784744 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int INF = 1e16; int n, m, u; vector<vector<pair<int, int>>> adj; signed main(){ cin >> n >> m >> u; adj.resize(n); for(int i = 0; i < m; i++){ int a, b, t; cin >> a >> b >> t; a--; b--; adj[a].push_back({b, t}); adj[b].push_back({a, t}); } vector<vector<int>> ans(n, vector<int>(n, 0)); for(int o = 0; o < u; o++){ int a, b, p; cin >> a >> b >> p; a--; b--; if(ans[a][b]!=0){ if(ans[a][b] <= p){ cout << "TAIP\n"; } else{ cout << "NE\n"; } continue; } vector<int> dist(n, INF); vector<bool> visited(n, false); priority_queue<pair<int, int>> q; q.push({0, a}); dist[a]=0; while(!q.empty()){ int x = q.top().second; q.pop(); if(visited[x])continue; visited[x]=true; for(auto u : adj[x]){ if(max(dist[x], u.second) < dist[u.first]){ dist[u.first] = max(dist[x], u.second); ans[a][u.first]=dist[u.first]; ans[u.first][a]=dist[u.first]; q.push({-dist[u.first], u.first}); } } } if(dist[b] <= p){ cout << "TAIP\n"; } else{ cout << "NE\n"; } } }
#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...