#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, INF));
for(int i = 0; i < n; i++){
vector<int> dist(n, INF);
vector<bool> visited(n, false);
priority_queue<pair<int, int>> q;
q.push({0, i});
dist[i]=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[i][u.first]=dist[u.first];
ans[u.first][i]=dist[u.first];
q.push({-dist[u.first], u.first});
}
}
}
}
for(int o = 0; o < u; o++){
int a, b, p;
cin >> a >> b >> p; a--; b--;
if(ans[a][b] <= p){
cout << "TAIP\n";
}
else{
cout << "NE\n";
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |