Submission #1283716

#TimeUsernameProblemLanguageResultExecution timeMemory
1283716tcmducSplit the Attractions (IOI19_split)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #define fi first #define se second using namespace std; const long long oo=1e18; const int mod=1e9+7; void home() { freopen("main.inp","r",stdin); freopen("main.out","w",stdout); } bool bit(int mask,int i){return (mask>>i)&1;} int on(int mask,int i){return mask|(1<<i);} int n,m; pair<int,int>mau[5]; vector<int>a[100005]; int sz[100005]; int pick=0; bool vis[100005]; void DFS(int u) { sz[u]=1;vis[u]=true; for(int v:a[u]) { if(!vis[v]) { DFS(v); sz[u]+=sz[v]; } } if(!pick&&sz[u]>=mau[1].fi&&n-sz[u]>=mau[2].fi)pick=u; } int cl[100005]; queue<int>q; int deg[100005]; void TraceA(int u,bool ok) { if(ok)cl[u]=1,mau[1].fi--; vis[u]=true; for(int v:a[u]) { if(!vis[v]) { deg[u]++; TraceA(v,ok|(v==pick)); } } if(deg[u]==0&&cl[u]==1)q.push(u); } void TraceB(int u) { if(!cl[u]&&mau[2].fi>0)cl[u]=2,mau[2].fi--; vis[u]=true; for(int v:a[u]) { if(!vis[v]&&v!=pick) TraceB(v); } } void Tcmduc_VOI26() { cin>>n>>m; cin>>mau[1].fi>>mau[2].fi>>mau[3].fi;mau[1].se=1;mau[2].se=2;mau[3].se=3; sort(mau+1,mau+3+1); for(int i=1;i<=m;i++) { int u,v;cin>>u>>v;u++,v++; a[u].push_back(v); a[v].push_back(u); } DFS(1); memset(vis,0,sizeof(vis)); if(!pick) { for(int i=1;i<=n;i++) cout<<0<<' '; return; } TraceA(1,0|(pick==1)); memset(vis,0,sizeof(vis)); TraceB(1); while(!q.empty()) { int u=q.front();q.pop(); if(mau[1].fi==0)break; cl[u]=0;mau[1].fi--; for(int v:a[u]) { deg[v]--; if(deg[v]==0)q.push(v); } } for(int i=1;i<=n;i++) { if(cl[i]==1)cout<<mau[1].se<<' '; else if(cl[i]==2)cout<<mau[2].se<<' '; else cout<<mau[3].se<<' '; } } int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);//home(); Tcmduc_VOI26(); return 0; }

Compilation message (stderr)

split.cpp: In function 'void home()':
split.cpp:9:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |     freopen("main.inp","r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
split.cpp:10:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     freopen("main.out","w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccK9SPtY.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccdxvBdN.o:split.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccK9SPtY.o: in function `main':
grader.cpp:(.text.startup+0x270): undefined reference to `find_split(int, int, int, int, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status