제출 #1168164

#제출 시각아이디문제언어결과실행 시간메모리
1168164Ghulam_Junaid새로운 문제 (POI13_luk)C++20
100 / 100
432 ms26504 KiB
#include <bits/stdc++.h>
using namespace std;

const int N = 3e5 + 100;
int n, dp[N], X;
vector<int> g[N];

void dfs(int v, int p = -1){
    int ch = 0, sm = 0;
    for (int u : g[v]){
        if (u == p) continue;
        ch++;
        dfs(u, v);
        sm += dp[u];
    }
    dp[v] = max(0, ch - X + sm);
}

int main(){
    cin >> n;
    for (int i = 1; i < n; i ++){
        int u, v;
        cin >> u >> v;
        g[u].push_back(v);
        g[v].push_back(u);
    }

    int l = -1;
    int r = n;
    while (r - l > 1){
        int mid = (l + r) / 2;
        X = mid;
        dfs(1);
        if (dp[1] > 0) l = mid;
        else r = mid;
    }
    cout << r << endl;
}
#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...