제출 #1168181

#제출 시각아이디문제언어결과실행 시간메모리
1168181Rafiullah새로운 문제 (POI13_luk)C++20
100 / 100
358 ms22496 KiB
#include <bits/stdc++.h>
#define fi first
#define se second
#define bupo __builtin_popcount
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
#define int long long
const int LOG = 16, MAXB = 1<<LOG, SQR = 1<<10;
const ll MOD = 1e9+7;
const int mod = 998244353;
const int N = 3e5 + 5;
vector<int> G[N];int M;
int dfs(int node,int par = 0){
    int c = G[node].size() - (node != 1);
    for(int ch : G[node]){
        if(par == ch)continue;
        int ret = dfs(ch,node);
        c += ret;
    }
    return max(0ll, c - M);
}
void solve(){
    int n;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);
    }
    if(n == 1){
        cout << 0 << '\n';return;
    }
    int L = 0, R = n;
    while(L + 1 < R){
        M = (L + R) / 2;
        if(dfs(1) == 0)R = M;
        else L = M;
    }
    cout << R << '\n';
}
signed main(){
    int t = 1;
    // cin >> t;
    while(t--)
        solve();
}
#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...