Submission #1143320

#TimeUsernameProblemLanguageResultExecution timeMemory
1143320wizard_49Triumphal arch (POI13_luk)C++20
0 / 100
200 ms42104 KiB
#include <iostream> #include <fstream> #include <vector> using namespace std; const int NMAX=300000; vector <int> g[NMAX+1]; vector <int> tree_dist[NMAX+1]; vector <int> depth_measure[NMAX+1]; bool viz[NMAX+1]; int available_worker_teams; int current_dist_from_base; void dfs(int x,int dist){ viz[x]=1; depth_measure[dist].push_back(x); for(const int &y:g[x]) if(viz[y]==0) { tree_dist[y].push_back(dist+1); if(current_dist_from_base<dist+1) current_dist_from_base=dist+1; dfs(y,dist+1); } } int main() { int a,b,n; cin>>n; for(int i=1;i<n;i++) { cin>>a>>b; g[a].push_back(b); g[b].push_back(a); } dfs(1,0); int initial_worker_teams=depth_measure[0].size(); int level_worker_teams,extra_worker_teams=0; for(int i=1;i<=current_dist_from_base;i++) { level_worker_teams=depth_measure[i].size(); if(level_worker_teams-extra_worker_teams>=initial_worker_teams) { initial_worker_teams=level_worker_teams-extra_worker_teams; extra_worker_teams=0; } else if(initial_worker_teams>level_worker_teams) extra_worker_teams+=initial_worker_teams-level_worker_teams; else if(initial_worker_teams>level_worker_teams-extra_worker_teams && initial_worker_teams<level_worker_teams) extra_worker_teams-=initial_worker_teams-level_worker_teams; } cout<<initial_worker_teams; return 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...
#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...