Submission #1143351

#TimeUsernameProblemLanguageResultExecution timeMemory
1143351calisovraduTriumphal arch (POI13_luk)C++20
0 / 100
389 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 = crews,lastday=0;
    queue<int> q;
    q.push(1);
    while(!q.empty()){
    int nod = q.front(),removed=0;
    bool found = false;
    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);
               removed++;
               if(depth[newnod]>lastday)
               found=true;
            }
        }
        if(removed>0){
            if(left-removed<0)
            return false;
            if(found==true){
                lastday++;
                left+=crews;
            }
        }
        
    }
    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=n;
    while(l<=r){
        mij=(l+r)/2;
        bool res = bfs(mij);
        if(res==true){
            corect=min(mij,corect);
            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...