제출 #1014020

#제출 시각아이디문제언어결과실행 시간메모리
1014020basa새로운 문제 (POI13_mor)C++14
0 / 100
1161 ms131072 KiB
#include <bits/stdc++.h> #include <cmath> using namespace std; #define int long long const int maxn = 5000; const int SHORT_MAX = 32767; int n, m, k; short vis[maxn]; vector<int>adj[maxn]; short dist[maxn][maxn][2]; signed main() { cin.tie(0) -> sync_with_stdio(0); cin >> n >> m >> k; for(int i = 0; i < m; i++){ int u, v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ dist[i][j][0] = SHORT_MAX; dist[j][i][0] = SHORT_MAX; dist[i][j][1] = SHORT_MAX; dist[j][i][1] = SHORT_MAX; } } while(k--){ int s, t, d; cin >> s >> t >> d; if(s == t){ if(adj[s].size() == 0) cout << "NIE\n"; else cout << (d % 2 == 0 ? "TAK\n" : "NIE\n"); continue; } if(d % 2 == 0){ if(dist[s][t][0] != SHORT_MAX && dist[s][t][0] <= d){ cout << "TAK\n"; continue; } if(dist[t][s][0] != SHORT_MAX && dist[t][s][0] <= d){ cout << "TAK\n"; continue; } } if(d % 2 == 1){ if(dist[s][t][1] != SHORT_MAX && dist[s][t][1] <= d){ cout << "TAK\n"; continue; } if(dist[t][s][1] != SHORT_MAX && dist[t][s][1] <= d){ cout << "TAK\n"; continue; } } dist[s][s][0] = 0; queue<int>q; q.push(s); while(q.size()){ int v = q.front(); q.pop(); for(int i : adj[v]){ if(dist[s][v][0] + 1 < dist[s][i][1]){ dist[s][i][1] = dist[s][v][0] + 1; q.push(i); } if(dist[s][v][1] + 1 < dist[s][i][0]){ dist[s][i][0] = dist[s][v][1] + 1; q.push(i); } } } int e = dist[s][t][0]; int o = dist[s][t][1]; if(d % 2 == 0 && e <= d) cout << "TAK\n"; else if(d % 2 == 1 && o <= d) cout << "TAK\n"; else cout << "NIE\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...
#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...