Submission #991487

#TimeUsernameProblemLanguageResultExecution timeMemory
991487MarwenElarbiSplit the Attractions (IOI19_split)C++17
7 / 100
40 ms15196 KiB
#include<bits/stdc++.h> using namespace std; #define fi first #define se second #define ll long long #define pb push_back const int nax=200005; vector<int> adj[nax]; int fst; int parent; vector<int> res; int aa,bb; bool vis[nax]; void dfs(int x,int cur){ // cout <<x<<" "<<cur<<" "<<aa<<endl; if(cur==aa){ fst=x; return; } //cout <<fst<<endl; vis[x]=true; res[x]=1; for(auto u:adj[x]){ if(vis[u]) continue; dfs(u,cur+1); return; } } void dfs1(int x,int cur){ if(cur==bb) return; res[x]=2; vis[x]=true; for(auto u:adj[x]){ if(vis[u]) continue; dfs1(u,cur+1); } } vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q){ bb=b; aa=a; res.resize(n,0); for (int i = 0; i < (int)p.size(); ++i) { adj[p[i]].pb(q[i]); adj[q[i]].pb(p[i]); } fst=-1; for (int i = 0; i < n; ++i) { if(adj[i].size()==1) fst=i; } if(fst==-1) fst=0; //cout <<fst<<endl; dfs(fst,0); dfs1(fst,0); for (int i = 0; i < n; ++i) { if(res[i]==0) res[i]=3; //cout <<res[i]<<" "; }//cout <<endl; return res; }
#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...