Submission #1237118

#TimeUsernameProblemLanguageResultExecution timeMemory
1237118Ghulam_JunaidSplit the Attractions (IOI19_split)C++17
18 / 100
52 ms17864 KiB
#include <bits/stdc++.h> #include "split.h" // #include "grader.cpp" 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 target, int day){ seen.push_back(v); vis[v] = day; for (int u : g[v]){ if (vis[u]) continue; if (seen.size() < target) dfs(u, target, 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...