#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |