Submission #253663

#TimeUsernameProblemLanguageResultExecution timeMemory
253663TriPhanSplit the Attractions (IOI19_split)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include <split.h> #define TASK "SPLIT" #define pb push_back #define ii pair<int,int> #define iii pair<ii,int> #define ll long long #define F first #define S second #define FOR(i, a, b) for (int i=a; i<=b; i++) #define FOr(i, a, b) for (int i=a; i<b ; i++) #define FOD(i, a, b) for (int i=a; i>=b; i--) #define FOd(i, a, b) for (int i=a; i>b ; i--) #define vi vector<int> using namespace std; const int N=(int)1e6+7; const int MOD=(int)1e9+7; const ll INF=(ll)1e18+7; vector<int> a[N]; ii A[3]; int visit[N],par[N],sz[N],ans[N],lift[N]; int m,n,T,root; void dfs(int u) { visit[u]=1; sz[u]=1; for (int v:a[u]) { if (visit[v]) { if (v!=par[u]) lift[u]=v; continue; } par[v]=u; dfs(v); sz[u]+=sz[v]; } if (sz[u] >= A[0].F && root==0) root=u; } void DFS(int u,int p) { if (A[T].F) { A[T].F--; ans[u]=A[T].S; } visit[u]=1; for (int v:a[u]) if (v!=p && visit[v]==0) DFS(v,u); } vi find_split(int n, int aa, int b, int c, vi p, vi q) { m=sizeof(p); A[0].F=aa; A[1].F=b; A[2].F=c; A[0].S=1; A[1].S=2; A[2].S=3; sort(A,A+3); FOR(i,0,m-1) { int u,v; u=p[i]; v=q[i]; ++u; ++v; a[u].pb(v); a[v].pb(u); } visit[1]=1; dfs(1); if (par[root]==0) { FOR(i,1,n) cout << "0 "; return 0; } for (int v:a[root]) { if (n-sz[root] >= A[0].F) break; if (!lift[v]) continue; par[v]=lift[v]; sz[root]-=sz[v]; } if (n-sz[root] < A[0].F) { FOR(i,1,n) cout << "0 "; return 0; } FOR(i,1,n) a[i].clear(); FOR(i,1,n) if (i!=root) { a[par[i]].push_back(i); if (par[i]!=0) a[i].push_back(par[i]); } FOR(i,1,n) visit[i]=0; if (sz[root]>=A[1].F) { T=1; DFS(root,0); T=0; DFS(par[root],0); } else { T=0; DFS(root,0); T=1; DFS(par[root],0); } FOR(i,1,n) if (!ans[i]) ans[i]=A[2].S; FOR(i,1,n) res.push_back(ans[i]); 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:74:16: error: could not convert '0' from 'int' to 'std::vector<int>'
         return 0;
                ^
split.cpp:85:16: error: could not convert '0' from 'int' to 'std::vector<int>'
         return 0;
                ^
split.cpp:114:9: error: 'res' was not declared in this scope
         res.push_back(ans[i]);
         ^~~
split.cpp:115:12: error: 'res' was not declared in this scope
     return res;
            ^~~