Cod sursa(job #3361561)

Utilizator SebimunMunteanu Sebastian Sebimun Data 25 iulie 2026 16:49:25
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <bits/stdc++.h>
using namespace std;
const int nmax=16000;
int dp[nmax+5];
int sz[nmax+5];
int n;
vector<int>L[nmax+5];
const int mod=30011;
int fr[nmax+5];
void dfs(int nod,int tata){
    sz[nod]=1;
    vector<int>fii;
    for(auto x:L[nod]){
        if(x!=tata){
            fii.push_back(x);
            dfs(x,nod);

            sz[nod]+=sz[x];
        }
    }
    dp[nod]=n-sz[nod];
    for(int i=0;i<fii.size();i++)
    {
        dp[nod]=max(dp[nod], max(n-sz[nod],sz[fii[i]]));
    }


}
int main(){
    ifstream cin("sediu.in");
    ofstream cout("sediu.out");
    cin >> n;
    for(int i=1;i<n;i++){
        int a,b;
        cin >> a >> b;
        L[a].push_back(b);
        L[b].push_back(a);
        fr[b]=1;
    }

    int sol=1e9;
    vector<int>rez;
    for(int i=1;i<=n;i++){
        if(dp[i]<sol){
            sol=dp[i];
            rez.clear();
            rez.push_back(i);
        }
        else if(dp[i]==sol){
            rez.push_back(i);
        }
    }
    cout << sol<<' ' <<rez.size() <<'\n';
    sort(rez.begin(),rez.end());
    for(int i=0;i<rez.size();i++){
        cout << rez[i] <<' ' ;
    }

    return 0;
}