Submission #1143314

#TimeUsernameProblemLanguageResultExecution timeMemory
1143314calisovradu새로운 문제 (POI13_luk)C++20
0 / 100
358 ms19896 KiB
#include <bits/stdc++.h> using namespace std; vector<vector<int>> v; vector<int> depth; int n; bool bfs(int crews){ vector<int> checked(n+1); checked[1]=1; int left = 0,lastday=0; queue<int> q; q.push(1); while(!q.empty()){ int nod = q.front(); if(depth[nod]>lastday){ lastday++; left+=crews; } q.pop(); for(int i=0;i<v[nod].size();i++){ int newnod = v[nod][i]; if(checked[newnod]==0){ checked[newnod]=1; q.push(newnod); left--; if(left<0) return false; } } } return true; } int main() { cin>>n; v.resize(n+1); depth.resize(n+1); for(int i=1;i<=n-1;i++){ int a,b; cin>>a>>b; v[a].push_back(b); v[b].push_back(a); } depth[1]=1; queue<int> q; q.push(1); while(!q.empty()){ int nod = q.front(); q.pop(); for(int i=0;i<v[nod].size();i++){ int newnod = v[nod][i]; if(depth[newnod]==0){ depth[newnod]=depth[nod]+1; q.push(newnod); } } } int l=1,r=n,mij,corect; while(l<=r){ mij=(l+r)/2; bool res = bfs(mij); if(res==true){ corect=mij; r=mij-1; }else l=mij+1; } cout<<corect; }
#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...