제출 #1225212

#제출 시각아이디문제언어결과실행 시간메모리
1225212PanosPaskGame (APIO22_game)C++20
0 / 100
0 ms408 KiB
#include "game.h" #include <bits/stdc++.h> #define pb push_back using namespace std; int N, K; vector<vector<int>> adj_list; vector<vector<int>> revlist; vector<int> priority; vector<bool> visited; vector<int> cnt; vector<int> idx; void dfs1(int node) { if (visited[node]) { return; } visited[node] = true; for (auto neigh : adj_list[node]) { dfs1(neigh); } priority.pb(node); } void dfs2(int node) { if (visited[node]) { return; } visited[node] = true; if (idx[node] == -1) { idx[node] = cnt.size(); cnt.pb(0); } cnt[idx[node]]++; for (auto neigh : adj_list[node]) { idx[neigh] = idx[node]; dfs2(neigh); } } void components(void) { visited.assign(N, false); priority.clear(); for (int i = 0; i < N; i++) { dfs1(i); } idx.assign(N, -1); visited.assign(N, false); cnt.clear(); while (!priority.empty()) { dfs2(priority.back()); priority.pop_back(); } } void init(int n, int k) { N = n; K = k; adj_list.resize(N); revlist.resize(N); for (int i = 0; i < K - 1; i++) { adj_list[i].pb(i + 1); revlist[i + 1].pb(i); } } int add_teleporter(int u, int v) { adj_list[u].pb(v); revlist[v].pb(u); components(); for (int i = 0; i < K; i++) { if (cnt[idx[i]] > 1) { return 0; } } return 1; }
#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...