제출 #587858

#제출 시각아이디문제언어결과실행 시간메모리
587858lcjSplit the Attractions (IOI19_split)C++17
33 / 100
496 ms1048576 KiB
#include <bits/stdc++.h> #define fi first #define se second using namespace std; typedef long long ll; typedef pair<ll, ll> pll; typedef pair<int, int> pii; vector<vector<int>> adj; vector<pii> subtrees; vector<int> par; int dfs(int cn, int pa) { par[cn] = pa; int su = 1; for (int nn : adj[cn]) { if (nn==pa) continue; su += dfs(nn, cn); } subtrees.push_back({su, cn}); return su; } vector<int> flag; void flag_subtree(int cn, int pa, int fl) { flag[cn] = fl; for (int nn : adj[cn]) { if (nn==pa) continue; flag_subtree(nn, cn, fl); } } void flag_arb(int cn, int &rem, int fl, int pr = -1) { if (rem == 0) return; flag[cn] = fl; rem--; for (int nn : adj[cn]) { if (nn == pr) continue; if (flag[nn] != 3) continue; flag_arb(nn, rem, fl); } } vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) { adj.assign(n, {}); par.assign(n, -1); flag.assign(n, 3); vector<int> res(n, 0); bool dfl = a==1; for (int i = 0; i < (int)p.size(); i++) { adj[p[i]].push_back(q[i]); adj[q[i]].push_back(p[i]); } bool prop1 = 1; for (int i = 0; i < n; i++) { prop1 &= adj[i].size() == 2; } if (prop1) { adj[0].erase(adj[0].begin()+1); } if (a==1) { int rem = b; flag_arb(0, rem, 2); for (int i = 0; i < n; i++) { if (flag[i] == 3) { flag[i] = 1; break; } } goto skipper; } dfs(0, -1); for (pii i : subtrees) { if (i.fi >= a && n-i.fi >= b) { int rem = a; flag_arb(i.se, rem, 1, par[i.se]); rem = b; flag_arb(par[i.se], rem, 2); dfl = 1; break; } if (i.fi >= b && n-i.fi >= a) { int rem = b; flag_arb(i.se, rem, 2, par[i.se]); rem = a; flag_arb(par[i.se], rem, 1); dfl = 1; break; } } skipper: if (dfl) { res = flag; } 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...