///KoJa
#include<bits/stdc++.h>
using namespace std;
#define task "test"
#define vec vector
#define fi first
#define se second
#define BIT(n) (1LL << (n))
#define MASK(x, i) (((x) >> (i))&1)
#define pb push_back
#define mp make_pair
#define SZ(a) (a).begin(), (a).end()
#define SZZ(a, Begin, End) (a) + (Begin), (a) + (Begin) + (End)
typedef long long ll;
typedef pair<int, int> ii;
template<class T>
bool maximize(T &a, const T &b) { return ((a < b) ? (a = b, 1) : 0);}
template<class T>
bool minimize(T &a, const T &b) { return ((a > b) ? (a = b, 1) : 0);}
struct Points
{
ll x, y;
Points(){}
Points(ll _x, ll _y)
{
x = _x;
y = _y;
}
Points operator - (const Points &other) const { return Points(x - other.x, y - other.y);}
ll operator * (const Points &other) const { return x * other.y - y * other.x;}
ll triangle(const Points &b, const Points &c) const {return (*this - b) * (*this - c);}
};
void fastio()
{
ios_base::sync_with_stdio(NULL);
cin.tie(NULL);
if(fopen(task ".inp", "r"))
{
freopen(task ".inp", "r", stdin);
freopen(task ".out", "w", stdout);
}
}
const int N = int(2e5) + 10;
const int INF = 1e9;
int n, dp1[N], dp2[N], cnt[N];
vec<vec<int>> adj(N);
void init()
{
cin >> n;
for(int i = 1; i <= n - 1; i++)
{
int x, y;
cin >> x >> y;
adj[x].pb(y);
}
}
void dfs(int u, bool isMax)
{
if((int)adj[u].size() == 0)
{
dp1[u] = dp2[u] = cnt[u] = 1;
return;
}
for(int v : adj[u])
{
dfs(v, isMax^1);
cnt[u] += cnt[v];
}
if(isMax) dp1[u] = -INF;
else dp2[u] = INF;
for(int v : adj[u])
{
if(isMax)
{
dp1[u] = max(dp1[u], cnt[u] - cnt[v] + dp1[v]);
dp2[u] += dp2[v];
}
else
{
dp1[u] += (dp1[v] - 1);
dp2[u] = min(dp2[u], dp2[v]);
}
}
if(!isMax) dp1[u]++;
}
void process(int tc = 0)
{
dfs(1, 1);
cout << dp1[1] << " " << dp2[1];
}
int main()
{
fastio();
int tc = 1;
//cin >> tc;
for(int i = 1; i <= tc; i++)
{
init();
process(i);
}
return 0;
}
380. Insert Delete GetRandom O(1) | 332. Reconstruct Itinerary |
368. Largest Divisible Subset | 377. Combination Sum IV |
322. Coin Change | 307. Range Sum Query - Mutable |
287. Find the Duplicate Number | 279. Perfect Squares |
275. H-Index II | 274. H-Index |
260. Single Number III | 240. Search a 2D Matrix II |
238. Product of Array Except Self | 229. Majority Element II |
222. Count Complete Tree Nodes | 215. Kth Largest Element in an Array |
198. House Robber | 153. Find Minimum in Rotated Sorted Array |
150. Evaluate Reverse Polish Notation | 144. Binary Tree Preorder Traversal |
137. Single Number II | 130. Surrounded Regions |
129. Sum Root to Leaf Numbers | 120. Triangle |
102. Binary Tree Level Order Traversal | 96. Unique Binary Search Trees |
75. Sort Colors | 74. Search a 2D Matrix |
71. Simplify Path | 62. Unique Paths |