Submission #587827

#TimeUsernameProblemLanguageResultExecution timeMemory
587827lcjSplit the Attractions (IOI19_split)C++17
0 / 100
508 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) { if (rem == 0) return; flag[cn] = fl; rem--; for (int nn : adj[cn]) { if (flag[nn] != 3) continue; flag_arb(cn, 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); for (int i = 0; i < p.size(); i++) { adj[p[i]].push_back(q[i]); adj[q[i]].push_back(p[i]); } dfs(0, -1); bool dfl = 0; for (pii i : subtrees) { if (i.fi >= a && n-i.fi >= b) { flag_subtree(i.se, par[i.se], 1); int rem = b; flag_arb(par[i.se], b, 2); dfl = 1; break; } if (i.fi >= b && n-i.fi >= a) { flag_subtree(i.se, par[i.se], 2); int rem = a; flag_arb(par[i.se], b, 1); dfl = 1; break; } } vector<int> res; if (!dfl) { res = {0, 0, 0, 0, 0, 0}; } else { res = flag; } return res; }

Compilation message (stderr)

split.cpp: In function 'std::vector<int> find_split(int, int, int, int, std::vector<int>, std::vector<int>)':
split.cpp:49:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |     for (int i = 0; i < p.size(); i++)
      |                     ~~^~~~~~~~~~
split.cpp:59:17: warning: unused variable 'rem' [-Wunused-variable]
   59 |             int rem = b;
      |                 ^~~
split.cpp:66:17: warning: unused variable 'rem' [-Wunused-variable]
   66 |             int rem = a;
      |                 ^~~
#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...