답안 #537406

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
537406 2022-03-15T05:02:33 Z mmonteiro Burza (COCI16_burza) C++17
0 / 160
338 ms 524288 KB
#include "bits/stdc++.h"

/*
 * Author: Matheus Monteiro
 */

using namespace std;

#define SZ(a) (int)a.size()
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);

const int MAX = 401;

int n, k;
vector<int> G[MAX];
int tin[MAX], tout[MAX], level[MAX], timer;
vector<int> bucket[MAX];
int dp[1 << 20][MAX];

void dfs(int v, int p) {
	if(level[v] >= 0)
		bucket[level[v]].push_back(v);

	tin[v] = timer + 1;
	for(int u : G[v]) {
		if(u != p) {
			level[u] = level[v] + 1;
			if(level[u] < k) {
				dfs(u, v);
			}
		}
	}
	if(level[v] == k - 1)	
		timer++;

	tout[v] = timer;
}

void solve() {
	cin >> n >> k;
	for(int i = 1; i < n; ++i) {
		int u, v;
		cin >> u >> v; --u; --v;
		G[u].push_back(v);
		G[v].push_back(u);
	}

	level[0] = -1;
	dfs(0, -1);

	for(int i = 0; i <= k; ++i)
		sort(bucket[i].begin(), bucket[i].end(), [&](int a, int b)
			{
				return tin[a] < tin[b];
			}
		);

	for(int i = 0; i < (1 << k); ++i)
		dp[i][0] = 1;

	for(int i = 1; i < (1 << k); ++i) 
		for(int j = 0; j < k; ++j) 
			if(i & (1 << j)) 
				for(int u : bucket[j]) 
					if(dp[i ^ (1 << j)][ tin[u] - 1])
						dp[i][ tout[u] ] = 1;		

	bool flag = false;
	for(int i = 0; i < (1 << k); ++i)
		if(dp[i][timer])
			flag = true;

	cout << (flag ? "DA\n" : "NE\n");
}

int32_t main() {

	fastio;
	solve();

	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 26068 KB Output is correct
2 Correct 232 ms 206072 KB Output is correct
3 Runtime error 338 ms 524288 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 214 ms 206068 KB Output is correct
2 Correct 215 ms 206080 KB Output is correct
3 Runtime error 217 ms 524288 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 211 ms 206072 KB Output is correct
2 Correct 226 ms 206068 KB Output is correct
3 Runtime error 202 ms 524288 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 48 ms 51796 KB Output is correct
2 Correct 240 ms 206068 KB Output is correct
3 Runtime error 194 ms 524288 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 204 ms 206028 KB Output is correct
2 Correct 220 ms 206068 KB Output is correct
3 Runtime error 216 ms 524288 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 225 ms 206000 KB Output is correct
2 Correct 201 ms 206028 KB Output is correct
3 Runtime error 185 ms 524288 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 235 ms 206116 KB Output is correct
2 Correct 201 ms 206116 KB Output is correct
3 Runtime error 224 ms 524288 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 56 ms 51680 KB Output is correct
2 Correct 221 ms 206100 KB Output is correct
3 Runtime error 201 ms 524288 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 26068 KB Output is correct
2 Correct 236 ms 205972 KB Output is correct
3 Runtime error 196 ms 524288 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 105 ms 103212 KB Output is correct
2 Correct 228 ms 206072 KB Output is correct
3 Runtime error 196 ms 524288 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -