Submission #584942

# Submission time Handle Problem Language Result Execution time Memory
584942 2022-06-28T07:21:23 Z amunduzbaev Mousetrap (CEOI17_mousetrap) C++17
45 / 100
783 ms 67940 KB
#include "bits/stdc++.h"
using namespace std;
 
#define ar array
typedef int64_t ll;

const int N = 1e6 + 5;
vector<int> edges[N];
int n, t, m, dp[N], is[N];
int c[N];

void dfs(int u, int p = -1){
	is[u] = (u == t), c[u] = -1;
	vector<int> t;
	for(auto x : edges[u]){
		if(x == p) continue;
		dfs(x, u);
		is[u] |= is[x];
		if(!is[x]) t.push_back(x);
		else c[u] = x;
	}
	sort(t.begin(), t.end(), [&](int& i, int& j){
		return dp[i] > dp[j];
	});
	edges[u] = t;
	
	if(t.empty()) dp[u] = 0;
	else {
		dp[u] = t.size();
		if((int)t.size() > 1) dp[u] += dp[t[1]]; 
	}
}

signed main(){
	ios::sync_with_stdio(0); cin.tie(0);
	
	cin>>n>>t>>m;
	if(t == m){
		cout<<0<<"\n";
		return 0;
	}
	for(int i=1;i<n;i++){
		int a, b; cin>>a>>b;
		edges[a].push_back(b);
		edges[b].push_back(a);
	}
	
	dfs(m);
	int pos = 0, res = 0;
	while(m != t){
		pos++;
		vector<int>& t = edges[m];
		if(pos >= (int)t.size()){
			pos -= (int)t.size();
			res += (int)t.size();
		} else {
			res += dp[t[pos]] + (int)t.size();
			pos = 1e9;
		}
		m = c[m];
	}
	
	cout<<res<<"\n";
}

/*

8 7 1
1 2
2 3
3 4
3 5
3 6
4 7
4 8

*/
# Verdict Execution time Memory Grader output
1 Correct 12 ms 23764 KB Output is correct
2 Correct 13 ms 23808 KB Output is correct
3 Correct 13 ms 23788 KB Output is correct
4 Correct 12 ms 23764 KB Output is correct
5 Correct 12 ms 23756 KB Output is correct
6 Correct 15 ms 23764 KB Output is correct
7 Correct 12 ms 23764 KB Output is correct
8 Correct 12 ms 23820 KB Output is correct
9 Correct 12 ms 23728 KB Output is correct
10 Correct 13 ms 23764 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 325 ms 66788 KB Output is correct
2 Correct 312 ms 62500 KB Output is correct
3 Correct 777 ms 67936 KB Output is correct
4 Correct 392 ms 45884 KB Output is correct
5 Correct 783 ms 67940 KB Output is correct
6 Correct 772 ms 67940 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 23764 KB Output is correct
2 Correct 13 ms 23808 KB Output is correct
3 Correct 13 ms 23788 KB Output is correct
4 Correct 12 ms 23764 KB Output is correct
5 Correct 12 ms 23756 KB Output is correct
6 Correct 15 ms 23764 KB Output is correct
7 Correct 12 ms 23764 KB Output is correct
8 Correct 12 ms 23820 KB Output is correct
9 Correct 12 ms 23728 KB Output is correct
10 Correct 13 ms 23764 KB Output is correct
11 Incorrect 11 ms 23828 KB Output isn't correct
12 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 12 ms 23764 KB Output is correct
2 Correct 13 ms 23808 KB Output is correct
3 Correct 13 ms 23788 KB Output is correct
4 Correct 12 ms 23764 KB Output is correct
5 Correct 12 ms 23756 KB Output is correct
6 Correct 15 ms 23764 KB Output is correct
7 Correct 12 ms 23764 KB Output is correct
8 Correct 12 ms 23820 KB Output is correct
9 Correct 12 ms 23728 KB Output is correct
10 Correct 13 ms 23764 KB Output is correct
11 Correct 325 ms 66788 KB Output is correct
12 Correct 312 ms 62500 KB Output is correct
13 Correct 777 ms 67936 KB Output is correct
14 Correct 392 ms 45884 KB Output is correct
15 Correct 783 ms 67940 KB Output is correct
16 Correct 772 ms 67940 KB Output is correct
17 Incorrect 11 ms 23828 KB Output isn't correct
18 Halted 0 ms 0 KB -