Submission #1105512

#TimeUsernameProblemLanguageResultExecution timeMemory
1105512alexander707070Split the Attractions (IOI19_split)C++14
18 / 100
57 ms17996 KiB
#include<bits/stdc++.h> #define MAXN 100007 using namespace std; int n,m,li[MAXN],tim,sz[MAXN]; pair<int,int> s[3]; vector<int> v[MAXN],ans; int in[MAXN]; int sol[MAXN]; bool vis[MAXN]; void mark(int x,int val,int id){ if(s[id].first==0)return; vis[x]=true; sol[x]=s[id].second; s[id].first--; for(int i:v[x]){ if(vis[i])continue; if(in[i]==val or in[i]==val+1)mark(i,val,id); } } bool dfs(int x,int p){ li[x]=tim; sz[x]=1; in[x]=1; for(int i=0;i<v[x].size();i++){ if(li[v[x][i]]==tim)continue; if(dfs(v[x][i],x))return true; sz[x]+=sz[v[x][i]]; } in[x]=2; if(sz[x]>=s[0].first and n-sz[x]>=s[1].first){ mark(x,2,0); if(s[0].first!=0)cout<<1/0; mark(p,0,1); return true; } if(sz[x]>=s[1].first and n-sz[x]>=s[0].first){ mark(x,2,1); if(s[1].first!=0)cout<<1/0; mark(p,0,0); return true; } return false; } vector<int> find_split(int N, int A, int B, int C,vector<int> p,vector<int> q){ n=N; m=int(p.size()); s[0]={A,1}; s[1]={B,2}; s[2]={C,3}; sort(s,s+3); for(int i=1;i<=m;i++){ v[p[i-1]+1].push_back(q[i-1]+1); v[q[i-1]+1].push_back(p[i-1]+1); } ans.resize(n); for(int i=1;i<=n;i++){ for(int f=1;f<=n;f++)in[f]=0; tim++; if(dfs(i,0))break; if(i==n)return ans; } for(int i=1;i<=n;i++){ if(sol[i]==0)sol[i]=s[2].second; } for(int i=1;i<=n;i++)ans[i-1]=sol[i]; return ans; } /*int main(){ ans=find_split(9, 4, 2, 3, {0, 0, 0, 0, 0, 0, 1, 3, 4, 5},{1, 2, 3, 4, 6, 8, 7, 7, 5, 6}); for(int i:ans){ cout<<i<<" "; } return 0; }*/

Compilation message (stderr)

split.cpp: In function 'bool dfs(int, int)':
split.cpp:29:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |  for(int i=0;i<v[x].size();i++){
      |              ~^~~~~~~~~~~~
split.cpp:40:27: warning: division by zero [-Wdiv-by-zero]
   40 |   if(s[0].first!=0)cout<<1/0;
      |                          ~^~
split.cpp:48:27: warning: division by zero [-Wdiv-by-zero]
   48 |   if(s[1].first!=0)cout<<1/0;
      |                          ~^~
#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...