Submission #1136886

#TimeUsernameProblemLanguageResultExecution timeMemory
1136886GabrielTriumphal arch (POI13_luk)C++20
0 / 100
97 ms19272 KiB
#include "bits/stdc++.h"
using namespace std;
vector<bool> Visitados;
vector< vector<long long> > Grafo;
bool Probar(long long Nodo, long long Gratis, long long Constructores){
    Visitados[Nodo] = 1;
    bool r = 1;
    long long Necesario = Grafo[Nodo].size() - 1;
    if(Necesario > Gratis) return 0;
    Gratis += Constructores - Necesario;
    for(auto E: Grafo[Nodo]){
        if(!Visitados[E]) r = r or Probar(E, Gratis, Constructores);
    }
    return r;
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    long long n, i = 0, d, Mejor;
    cin>>n;
    d = n + 22;
    Mejor = d;
    Grafo.assign(n + 1, {});
    Grafo[0].push_back(n);
    Grafo[n].push_back(0);
    n--;
    while(n--){
        long long a, b;
        cin>>a>>b;
        a--;
        b--;
        Grafo[a].push_back(b);
        Grafo[b].push_back(a);
    }
    n = Grafo.size();
    while(1){
        long long p = (i + d) / 2;
        Visitados.assign(n, 0);
        Visitados.back() = 1;
        if(Probar(0, p, p)){
            d = p - 1;
            Mejor = p;
        } else i = p + 1;
        if(i >= d + 1) break;
    }
    cout<<Mejor;
    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...