求助,MLE to TLE
查看原帖
求助,MLE to TLE
946909
Chase12345楼主2025/7/23 00:12
#include <bits/stdc++.h>
using namespace std;

const int N = 5e3 + 5, inf = 1e9;
int d[N][2], q[N * 2][2], h, t, n, vis[N];
vector <int> adj[N];

void bfs(int s) {
	for (int i = 1; i <= n; i++)d[i][0] = d[i][1] = inf;
	h = t = 0;
	q[t][0] = s, q[t++][1] = 0;
	d[s][0] = 0;
	while (h < t) {
		int u = q[h][0], p = q[h++][1];
		for (int v : adj[u]) {
			int np = 1 - p;
			if (d[v][np] == inf) {
				d[v][np] = d[u][p] + 1;
				q[t][0] = v;
				q[t++][1] = np;
			}
		}
	}
}

int main() {
	int m, k, u, v, s, t, dd;
	cin >> n >> m >> k;
	for (int i = 1, u, v; i <= m; i++) {
		cin >> u >> v;
		adj[u].push_back(v);
		adj[v].push_back(u);
	}
	while (k--) {
		cin >> s >> t >> dd;
        if (!vis[s])
    		bfs(s);
		bool pos = 0;
		if (s == t)
			pos = adj[s].empty() ? !dd : dd % 2 ? d[t][1] <= dd : d[t][0] <= dd;
		else
			pos = d[t][0] == inf && d[t][1] == inf ? 0 : dd % 2 ? d[t][1] <= dd : d[t][0] <= dd;
		cout << (pos ? "TAK\n" : "NIE\n");
	}
	return 0;
}
2025/7/23 00:12
加载中...