Submission #584926

# Submission time Handle Problem Language Result Execution time Memory
584926 2022-06-28T06:55:30 Z amunduzbaev Mousetrap (CEOI17_mousetrap) C++17
45 / 100
787 ms 68044 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];
		sort(t.begin(), t.end(), [&](int& i, int& j){
			return dp[i] > dp[j];
		});
		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 13 ms 23824 KB Output is correct
2 Correct 14 ms 23836 KB Output is correct
3 Correct 15 ms 23760 KB Output is correct
4 Correct 12 ms 23764 KB Output is correct
5 Correct 14 ms 23708 KB Output is correct
6 Correct 12 ms 23764 KB Output is correct
7 Correct 14 ms 23820 KB Output is correct
8 Correct 14 ms 23820 KB Output is correct
9 Correct 13 ms 23764 KB Output is correct
10 Correct 12 ms 23744 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 310 ms 66780 KB Output is correct
2 Correct 331 ms 62504 KB Output is correct
3 Correct 777 ms 68044 KB Output is correct
4 Correct 390 ms 45892 KB Output is correct
5 Correct 783 ms 67900 KB Output is correct
6 Correct 787 ms 67940 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 13 ms 23824 KB Output is correct
2 Correct 14 ms 23836 KB Output is correct
3 Correct 15 ms 23760 KB Output is correct
4 Correct 12 ms 23764 KB Output is correct
5 Correct 14 ms 23708 KB Output is correct
6 Correct 12 ms 23764 KB Output is correct
7 Correct 14 ms 23820 KB Output is correct
8 Correct 14 ms 23820 KB Output is correct
9 Correct 13 ms 23764 KB Output is correct
10 Correct 12 ms 23744 KB Output is correct
11 Incorrect 12 ms 23764 KB Output isn't correct
12 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 13 ms 23824 KB Output is correct
2 Correct 14 ms 23836 KB Output is correct
3 Correct 15 ms 23760 KB Output is correct
4 Correct 12 ms 23764 KB Output is correct
5 Correct 14 ms 23708 KB Output is correct
6 Correct 12 ms 23764 KB Output is correct
7 Correct 14 ms 23820 KB Output is correct
8 Correct 14 ms 23820 KB Output is correct
9 Correct 13 ms 23764 KB Output is correct
10 Correct 12 ms 23744 KB Output is correct
11 Correct 310 ms 66780 KB Output is correct
12 Correct 331 ms 62504 KB Output is correct
13 Correct 777 ms 68044 KB Output is correct
14 Correct 390 ms 45892 KB Output is correct
15 Correct 783 ms 67900 KB Output is correct
16 Correct 787 ms 67940 KB Output is correct
17 Incorrect 12 ms 23764 KB Output isn't correct
18 Halted 0 ms 0 KB -