#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 3e5 + 10;
vector<int> G[N];
int x;
int dfs(int v, int p = -1)
{
int c = 0;
vector<int> vec;
int sm = 0;
for(int u : G[v])
if(u != p)
{
c++;
sm += max(0ll, dfs(u, v));
}
return c + sm - x;
}
signed main()
{
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);
}
int l = 0, r = n;
while(r - l > 1)
{
int mid = (l + r) / 2;
x = mid;
if(max(0ll, dfs(1)) == 0)
r = mid;
else
l = mid;
}
cout << r << endl;
return 0;
}
# | 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... |