Submission #1011364

#TimeUsernameProblemLanguageResultExecution timeMemory
1011364NValchanovMousetrap (CEOI17_mousetrap)C++17
25 / 100
615 ms90192 KiB
#include<bits/stdc++.h>
 
#define endl '\n'
 
using namespace std;
 
typedef long long ll;
 
const ll MAXN = 1e6 + 10;
 
ll n, start, finish;
vector < ll > adj[MAXN];
ll dp[MAXN];
ll deg[MAXN];
 
void dfs(ll u, ll par)
{
    priority_queue < ll > pq;
 
    for(ll v : adj[u])
    {
        if(v == par)
            continue;
 
        dfs(v, u);
        pq.push(dp[v]);
    }
 
    if(pq.size() == 1)
        dp[u] = 1;
    else if(pq.size() >= 2)
    {
        pq.pop();
        ll cur = pq.top();
 
        if(u == par)
            dp[u] = deg[u] + cur;
        else
            dp[u] = deg[u] + cur - 1;
    }
 
}
 
void read()
{
    cin >> n >> finish >> start;
    for(int i = 1; i <= n - 1; i ++)
    {
        ll u,v;
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
        deg[u]++;
        deg[v]++;
    }
}
 
void solve()
{
    dfs(start, start);
 
    cout << dp[start] - 1 << endl;
}
 
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
 
    read();
    solve();
 
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...