답안 #610524

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
610524 2022-07-28T09:15:38 Z Arnch Mousetrap (CEOI17_mousetrap) C++17
25 / 100
788 ms 71948 KB
// oooo
/*
 har chi delet mikhad bebar ~
 gitar o ba khodet nabar! ~
 ;Amoo_Hasan;
*/

#include<bits/stdc++.h>
//#pragma GCC optimize("O3,no-stack-protector,unroll-loops")
//#pragma GCC target("avx2,fma")

using namespace std;

typedef long long ll;
typedef long double ld;

#define Sz(x) int((x).size())
#define All(x) (x).begin(), (x).end()
#define wtf(x) cout<<#x <<" : " <<x <<endl

constexpr ll inf = 1e18, N = 1e6 + 10, mod = 1e9 + 7, pr = 1000696969;

bool mark[N];
ll dp[N], par[N];
vector<int> adj[N];

void dfs(int x, int p = 0) {
	par[x] = p;

	int tim = 0;
	vector<ll> vc;
	for(auto j : adj[x]) {
		if(j == p) continue;
		tim++;
		dfs(j, x);
		vc.push_back(dp[j]);
	}

	sort(All(vc), greater<int>());
	
	if(tim == 0) {
		dp[x] = 0;
		return;
	}
	if(tim == 1) {
		dp[x] = 1;
		return;
	}

	dp[x] = tim;
	dp[x] += vc[1];
}

int main() {
    ios :: sync_with_stdio(0), cin.tie(0);

	int n, t, m; cin >>n >>t >>m;
	for(int i = 0; i < n - 1; i++) {
		int u, v; cin >>u >>v;
		adj[u].push_back(v), adj[v].push_back(u);
	}

	dfs(t);

	ll ans = dp[m];

	mark[m] = 1;
	
	int x = par[m];

	while(x != t) {
		vector<ll> vc;
		for(auto j : adj[x]) {
			if(mark[j] || j == par[x]) continue;
			vc.push_back(dp[j]);
		}
		sort(All(vc), greater<int>());
		ans += Sz(vc);
		if(Sz(vc) >= 2) ans += vc[1];

		mark[x] = 1;
		x = par[x];
	}

	cout<<ans;

    return 0;
}


# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 23764 KB Output is correct
2 Correct 13 ms 23820 KB Output is correct
3 Correct 12 ms 23764 KB Output is correct
4 Correct 12 ms 23808 KB Output is correct
5 Incorrect 14 ms 23800 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 317 ms 70748 KB Output is correct
2 Correct 284 ms 66044 KB Output is correct
3 Correct 788 ms 71856 KB Output is correct
4 Correct 350 ms 47844 KB Output is correct
5 Correct 775 ms 71860 KB Output is correct
6 Correct 760 ms 71948 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 23764 KB Output is correct
2 Correct 13 ms 23820 KB Output is correct
3 Correct 12 ms 23764 KB Output is correct
4 Correct 12 ms 23808 KB Output is correct
5 Incorrect 14 ms 23800 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 23764 KB Output is correct
2 Correct 13 ms 23820 KB Output is correct
3 Correct 12 ms 23764 KB Output is correct
4 Correct 12 ms 23808 KB Output is correct
5 Incorrect 14 ms 23800 KB Output isn't correct
6 Halted 0 ms 0 KB -