제출 #1237117

#제출 시각아이디문제언어결과실행 시간메모리
1237117Ghulam_JunaidSplit the Attractions (IOI19_split)C++17
0 / 100
33 ms11204 KiB
#include <bits/stdc++.h> #include "split.h" using namespace std; const int N = 2e5 + 10; int n, m, a, b, c; vector<int> g[N], seen, vis; void dfs(int v, int sz, int day){ seen.push_back(v); vis[v] = day; for (int u : g[v]){ if (vis[u]) continue; if (sz > 1) dfs(u, sz - 1, day); } } vector<int> find_split(int nn, int aa, int bb, int cc, vector<int> p, vector<int> q) { n = nn, a = aa, b = bb, c = cc, m = p.size(); for (int i = 0; i < m; i ++){ g[p[i]].push_back(q[i]); g[q[i]].push_back(p[i]); } vis.resize(n, 0); int v = 0; for (int i = 1; i < n; i ++) if (g[v].size() > g[i].size()) v = i; dfs(v, a, 1); bool done = 0; for (int i = 0; i < n and !done; i ++){ if (vis[i]) continue; seen.clear(); dfs(i, b, 2); if (seen.size() == b) done = 1; else{ for (int x : seen) vis[x] = 3; } } for (int i = 0; i < n; i ++) if (!vis[i]) dfs(i, c, 3); return vis; }
#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...