제출 #1242695

#제출 시각아이디문제언어결과실행 시간메모리
1242695iyedooSplit the Attractions (IOI19_split)C++20
7 / 100
44 ms14408 KiB
#include "split.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; vector<vector<int>> graph; vector<bool> visited; vector<int> res; int A = 0, B = 0, C = 0; void dfs(int u, int a, int b, int c) { for (int v: graph[u]) { if (visited[v]) continue; if (A != a) A++, res[v] = 1; else if (B != b) B++, res[v] = 2; else if (C != c) C++, res[v] = 3; visited[v] = 1; dfs(v, a, b, c); } } vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) { res.assign(n, 0); graph.resize(n); visited.assign(n, 0); for (int i = 0; i < p.size(); ++i) { graph[p[i]].push_back(q[i]); graph[q[i]].push_back(p[i]); } visited[0] = 1; res[0] = 1; A++; dfs(0, a, b, c); queue<int> Q; Q.push(0); visited[0] = 0; while (!Q.empty()) { int u = Q.front(); Q.pop(); for (int v: graph[u]) { if (visited[v]) continue; if (A != a) A++, res[v] = 1; else if (B != b) B++, res[v] = 2; else if (C != c) C++, res[v] = 3; visited[v] = 1; Q.push(v); } } return res; }
#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...