Submission #927211

#TimeUsernameProblemLanguageResultExecution timeMemory
927211Tuanlinh123Amusement Park (JOI17_amusement_park)C++17
28 / 100
152 ms5948 KiB
#include "Joi.h" #include<bits/stdc++.h> #define ll long long #define pll pair<ll, ll> #define pb push_back #define mp make_pair #define fi first #define se second #define ld long double using namespace std; void Joi(int n, int m, int u[], int v[], ll x, int t) { vector <vector <ll>> A(n); for (ll i=0; i<m; i++) A[u[i]].pb(v[i]), A[v[i]].pb(u[i]); vector <ll> tin(n, -1); ll Time=0; function <void(ll)> dfs=[&](ll u) { tin[u]=Time, Time=(Time+1)%60; MessageBoard(u, (x>>tin[u])&1); for (ll v:A[u]) if (tin[v]==-1) dfs(v); }; dfs(0); }
#include "Ioi.h" #include<bits/stdc++.h> #define ll long long #define pll pair<ll, ll> #define pb push_back #define mp make_pair #define fi first #define se second #define ld long double using namespace std; ll Ioi(int n, int m, int u[], int v[], int p, int cr, int t) { vector <vector <ll>> A(n); for (ll i=0; i<m; i++) A[u[i]].pb(v[i]), A[v[i]].pb(u[i]); ll Time=0, pos=0; vector <pll> realedge; vector <ll> order, tin(n, -1); function <void(ll)> dfs=[&](ll u) { if (u==p) pos=order.size(); order.pb(u); tin[u]=Time, Time=(Time+1)%60; for (ll v:A[u]) if (tin[v]==-1) realedge.pb({v, u}), dfs(v); }; dfs(0); for (ll i=0; i<n; i++) A[i].clear(); for (auto [u, v]:realedge) A[u].pb(v), A[v].pb(u); pll best={1e9, 0}; for (ll i=max(0ll, pos-200); i<=min(pos+200, n-60ll); i++) { vector <ll> mark(n, 0), dis(n, 0); mark[p]=1; for (ll j=i; j<i+60; j++) mark[order[j]]=1; function <void(ll, ll)> dfs1=[&](ll u, ll pa) { for (ll v:A[u]) if (v!=pa) { dfs1(v, u), mark[u]|=mark[v]; if (mark[v]) dis[u]=max(dis[u], dis[v]+1); } }; dfs1(p, -1); ll cnt=0, Max=0; for (ll j=0; j<n; j++) cnt+=mark[j], Max=max(Max, dis[j]); best=min(best, {(cnt-1)*2-Max, i}); } // assert(best.fi<=120); vector <ll> mark(n, 0), pa(n, -1), ism(n, 0); vector <pll> dis(n, {0, -1}); for (ll j=best.se; j<best.se+60; j++) mark[order[j]]=1; function <void(ll)> dfs1=[&](ll u) { for (ll v:A[u]) if (v!=pa[u]) { pa[v]=u, dfs1(v), mark[u]|=mark[v]; if (mark[v]) dis[u]=max(dis[u], {dis[v].fi+1, v}); } }; dfs1(p); ll Max=p; ism[Max]=1; while (dis[Max].se!=-1) Max=dis[Max].se, ism[Max]=1; ll cnt=0, bit[60]={}; bit[tin[p]]=cr; function <void(ll)> answer=[&](ll u) { for (ll& v:A[u]) if (ism[v] && v!=pa[u]) {swap(v, A[u].back()); break;} for (ll v:A[u]) if (mark[v] && v!=pa[u]) bit[tin[v]]=Move(v), cnt++, answer(v); if (!ism[u]) bit[tin[pa[u]]]=Move(pa[u]), cnt++; }; answer(p); // assert(cnt<=120); ll ans=0; for (ll i=0; i<60; i++) if (bit[i]) ans|=1ll<<i; return ans; }

Compilation message (stderr)

Ioi.cpp: In lambda function:
Ioi.cpp:22:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   22 |         if (u==p) pos=order.size(); order.pb(u);
      |         ^~
Ioi.cpp:22:37: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   22 |         if (u==p) pos=order.size(); order.pb(u);
      |                                     ^~~~~
#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...