Submission #1324742

#TimeUsernameProblemLanguageResultExecution timeMemory
1324742brendonwTales of seafaring (POI13_mor)C++20
80 / 100
1042 ms196608 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;
const ll inf = 2e9;
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int n, m, k;
	cin >> n >> m >> k;
	vector<vector<int>> adj(2 * n);
	for (int i = 0; i < m; ++i) {
		int a, b;
		cin >> a >> b;
		a--, b--;
		adj[a].push_back(b + n);
		adj[b + n].push_back(a);
		adj[a + n].push_back(b);
		adj[b].push_back(a + n);
	}
	vector<vector<int>> dist(n, vector<int>(2 * n, inf));
	for (int i = 0; i < n; ++i) {
		queue<int> q;
		dist[i][i] = 0;
		q.push(i);
		while (!q.empty()) {
			int u = q.front();
			q.pop();
			for (auto &v: adj[u]) {
				if (dist[i][v] == inf) {
					dist[i][v] = dist[i][u] + 1;
					q.push(v);
				}
			}
		}
	}
	for (int i = 0; i < k; ++i) {
		ll s, t, d;
		cin >> s >> t >> d;
		--s, --t;
		if (d & 1) {
			if (dist[s][t + n] <= d && !adj[s].empty()) {
				cout << "TAK\n";
			} else {
				cout << "NIE\n";
			}
		} else {
			if (dist[s][t] <= d && !adj[s].empty()) {
				cout << "TAK\n";
			} else {
				cout << "NIE\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...
#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...