Submission #584948

# Submission time Handle Problem Language Result Execution time Memory
584948 2022-06-28T07:26:34 Z amunduzbaev Mousetrap (CEOI17_mousetrap) C++17
45 / 100
822 ms 68020 KB
#include "bits/stdc++.h"
using namespace std;
 
#define ar array
typedef int64_t ll;
//~ #define int long long

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;
	assert(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);
	assert(is[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 23792 KB Output is correct
2 Correct 12 ms 23764 KB Output is correct
3 Correct 12 ms 23764 KB Output is correct
4 Correct 12 ms 23732 KB Output is correct
5 Correct 13 ms 23764 KB Output is correct
6 Correct 12 ms 23764 KB Output is correct
7 Correct 15 ms 23768 KB Output is correct
8 Correct 13 ms 23820 KB Output is correct
9 Correct 14 ms 23764 KB Output is correct
10 Correct 12 ms 23764 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 300 ms 66840 KB Output is correct
2 Correct 286 ms 62616 KB Output is correct
3 Correct 822 ms 67936 KB Output is correct
4 Correct 393 ms 45820 KB Output is correct
5 Correct 792 ms 68020 KB Output is correct
6 Correct 804 ms 67956 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 23792 KB Output is correct
2 Correct 12 ms 23764 KB Output is correct
3 Correct 12 ms 23764 KB Output is correct
4 Correct 12 ms 23732 KB Output is correct
5 Correct 13 ms 23764 KB Output is correct
6 Correct 12 ms 23764 KB Output is correct
7 Correct 15 ms 23768 KB Output is correct
8 Correct 13 ms 23820 KB Output is correct
9 Correct 14 ms 23764 KB Output is correct
10 Correct 12 ms 23764 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 12 ms 23792 KB Output is correct
2 Correct 12 ms 23764 KB Output is correct
3 Correct 12 ms 23764 KB Output is correct
4 Correct 12 ms 23732 KB Output is correct
5 Correct 13 ms 23764 KB Output is correct
6 Correct 12 ms 23764 KB Output is correct
7 Correct 15 ms 23768 KB Output is correct
8 Correct 13 ms 23820 KB Output is correct
9 Correct 14 ms 23764 KB Output is correct
10 Correct 12 ms 23764 KB Output is correct
11 Correct 300 ms 66840 KB Output is correct
12 Correct 286 ms 62616 KB Output is correct
13 Correct 822 ms 67936 KB Output is correct
14 Correct 393 ms 45820 KB Output is correct
15 Correct 792 ms 68020 KB Output is correct
16 Correct 804 ms 67956 KB Output is correct
17 Incorrect 12 ms 23764 KB Output isn't correct
18 Halted 0 ms 0 KB -