제출 #1317196

#제출 시각아이디문제언어결과실행 시간메모리
1317196PlayVoltzSplit the Attractions (IOI19_split)C++20
컴파일 에러
0 ms0 KiB
#include "split.h" #include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define pii pair<int, int> #define fi first #define se second int counter=0; vector<bool> ban, visited; vector<int> low, disc, sz, ans, par; vector<pii> vect; vector<vector<int> > graph, adj; void dfs(int node, int p){ par[node]=p; disc[node]=low[node]=counter++; for (auto num:graph[node])if (num!=p){ if (disc[num]==-1)dfs(num, node), low[node]=min(low[node], low[num]), adj[node].pb(num), sz[node]+=sz[num];; else low[node]=min(low[node], disc[num]); } } void label(int node, int p, int t){ visited[node]=1; if (vect[t].fi)--vect[t].fi, ans[node]=vect[t].se; for (auto num:adj[node])if (!ban[num])label(num, node, t); } void label2(int node, int p, int t){ visited[node]=1; if (!vect[t].fi||ans[node])return; --vect[t].fi; ans[node]=vect[t].se; for (auto num:graph[node])if (num!=p)label2(num, node, t); } vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q){ vect.pb(mp(a, 1)); vect.pb(mp(b, 2)); vect.pb(mp(c, 3)); sort(vect.begin(), vect.end()); ans.resize(n, 0); sz.resize(n, 1); adj.resize(n); low.resize(n); disc.resize(n, -1); graph.resize(n); par.resize(n, -1); visited.resize(n, 0); ban.resize(n, 0); for (int i=0; i<p.size(); ++i){ graph[p[i]].pb(q[i]); graph[q[i]].pb(p[i]); } dfs(0, -1); int mid=-1; for (int i=0; i<n; ++i){ int mx=0; for (auto num:adj[i])mx=max(mx, sz[num]); if (mx<a&&sz[i]>=a)mid=i; } int cc=sz[mid]; for (auto num:adj[mid])if (low[num]<disc[mid]&&cc-sz[num]>=vect[0].fi)cc-=sz[num], ban[num]=1; if (n-cc>=vect[1].fi)swap(vect[0], vect[1]); if (n-cc>=vect[0].fi){ label(mid, par[mid], 1); ban.assign(n, 0); for (int i=0; i<n; ++i)if (!visited[i]){ label2(i, -1, 0); break; } for (int i=0; i<n; ++i)if (!ans[i])ans[i]=vect[2].se; return ans; } vector<int> temp(n, 0); return temp; }

컴파일 시 표준 에러 (stderr) 메시지

split.cpp: In function 'void dfs(int, int)':
split.cpp:22:17: error: expected '}' before 'else'
   22 |                 else low[node]=min(low[node], disc[num]);
      |                 ^~~~
split.cpp:20:46: note: to match this '{'
   20 |         for (auto num:graph[node])if (num!=p){
      |                                              ^
split.cpp: At global scope:
split.cpp:24:1: error: expected declaration before '}' token
   24 | }
      | ^