Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
32927 gaochunzhen 【S】T2 C++ 解答错误 25 619 MS 356220 KB 1687 2024-10-02 14:59:43

Tests(5/20):


#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 2009; vector<int> G[N]; int n, m, q, type, lstans, fa[N][N][13]; bool vis[N][N]; void dfs(const int &u, int now) { if (vis[u][now]) return; vis[u][now] = 1; for (int v : G[now]) dfs(u, v); } void tp1(int &s) {s = (s ^ lstans) % n + 1;} int kth(int st, int u, int k) { for (int i = __lg(k); i >= 0; i--) { if (k >= (1 << i)) { u = fa[st][u][i], k -= (1 << i); } } return u; } signed main() { scanf("%d%d%d%d", &n, &m, &q, &type); for (int i = 1; i <= m; i++) { int u, v; scanf("%d%d", &u, &v); G[u].push_back(v); } for (int i = 1; i <= n; i++) { sort(G[i].begin(), G[i].end()); } for (int i = 1; i <= n; i++) dfs(i, i); for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (i == j || !vis[j][i]) continue; for (int k : G[j]) { if (vis[k][i]) { fa[i][j][0] = k; break; } } } } for (int k = 1; (1 << k) <= n; k++) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { fa[i][j][k] = fa[i][fa[i][j][k - 1]][k - 1]; } } } while (q--) { int s, t, K; scanf("%d%d%d", &s, &t, &K); if (type) tp1(s), tp1(t), tp1(K); int uk = kth(t, s, K - 1), un = kth(t, s, n); if (un || !uk) printf("-1\n"), lstans = 1; else printf("%d\n", lstans = uk); } fclose(stdin), fclose(stdout); return 0; }


测评信息: