제출 #741903

#제출 시각아이디문제언어결과실행 시간메모리
741903t6twotwo게임 (APIO22_game)C++17
60 / 100
4056 ms180000 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; int N, K; vector<vector<bool>> a, b; vector<vector<int>> adj, jda; void init(int n, int k) { N = n; K = k; adj.resize(N); jda.resize(N); a = vector(N, vector<bool>(K)); b = vector(K, vector<bool>(N)); for (int i = 0; i + 1 < K; i++) { adj[i].push_back(i + 1); jda[i + 1].push_back(i); for (int j = i + 1; j < K; j++) { a[i][j] = 1; b[i][j] = 1; } } } int add_teleporter(int u, int v) { if (u < K && v < K) { return v <= u; } adj[u].push_back(v); jda[v].push_back(u); for (int i = 0; i < K; i++) { if (b[i][u] || i == u) { b[i][v] = 1; queue<int> q; q.push(v); while (!q.empty()) { int x = q.front(); q.pop(); for (int y : adj[x]) { if (!b[i][y]) { b[i][y] = 1; q.push(y); } } } } } for (int i = 0; i < K; i++) { if (a[v][i] || i == v) { a[u][i] = 1; queue<int> q; q.push(u); while (!q.empty()) { int x = q.front(); q.pop(); for (int y : jda[x]) { if (!a[y][i]) { a[y][i] = 1; q.push(y); } } } } } bool flag = 0; for (int i = 0; i < K; i++) { if (a[u][i]) { flag = 1; } if (flag && b[i][u]) { return 1; } } 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...