답안 #1010907

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1010907 2024-06-29T14:05:17 Z WhiteZeros Burza (COCI16_burza) C++17
160 / 160
31 ms 1004 KB
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
#define task "coci1617_r2_burza"
const int N = 4e2 + 1 , M = 20 , inf = 1e9 ; 
int n , k , stt = 0; 
vector<int> D[N] , depth[M] , cover[N];   
int dp[1 << M] , tin[N] , tout[N] , pos[N];
void maximize(int &a , int b){
    if(a < b) a = b ; 
}
void minimize(int &a , int b){
    if(a > b) a = b ; 
}
void dfs(int u , int p , int h){
    depth[h].push_back(u) ;
    if(h == k){
        tin[u] = tout[u] = ++stt ;  
        return ; 
    }
    for(int v : D[u]){
        if(v == p) continue;    
        dfs(v , u , h + 1); 
        minimize(tin[u] , tin[v]) ; 
        maximize(tout[u] , tout[v]) ; 
    }
}
int main()
{
    ios_base::sync_with_stdio(NULL);cin.tie(NULL);cout.tie(NULL);
    if(ifstream(task".INP")){
        freopen(task".INP","r",stdin) ; 
        freopen(task".OUT","w",stdout) ;
    }
    cin >> n >> k ;
    if(k * k >= n){
        cout <<"DA" ; 
        return 0; 
    }
    for(int i = 1 ; i <= n ; i++) tin[i] = inf ; 
    for(int i = 1 ; i < n ; i++){
        int u , v ; 
        cin >> u >> v ; 
        D[u].push_back(v) ;
        D[v].push_back(u) ; 
    }
    dfs(1 , 0 , 0) ; 
    dp[0] = 0 ; 
	for (int i = 1; i < (1 << k); i++) {
		int &curr = dp[i];
		for (int j = 0; j < k; j++) {
			if ((i >> j & 1)) {
				int prev = dp[i ^ (1 << j)];
				for (int v : depth[j + 1]) {
					if (tin[v] <= prev + 1) {
						curr = max(curr, tout[v]);
					}
				}
			}
		}

		if (dp[i] == stt) {
			cout << "DA";
			return 0;
		}
	}

	cout << "NE";
    return 0;
}

Compilation message

burza.cpp: In function 'int main()':
burza.cpp:32:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |         freopen(task".INP","r",stdin) ;
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
burza.cpp:33:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |         freopen(task".OUT","w",stdout) ;
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 348 KB Output is correct
2 Correct 26 ms 1004 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 24 ms 864 KB Output is correct
2 Correct 25 ms 856 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 25 ms 896 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 26 ms 992 KB Output is correct
2 Correct 24 ms 904 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 600 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 620 KB Output is correct
2 Correct 26 ms 912 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 24 ms 920 KB Output is correct
2 Correct 28 ms 856 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 24 ms 860 KB Output is correct
2 Correct 24 ms 860 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 31 ms 960 KB Output is correct
2 Correct 24 ms 860 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 24 ms 904 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 600 KB Output is correct
2 Correct 26 ms 956 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 348 KB Output is correct
2 Correct 25 ms 976 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 720 KB Output is correct
2 Correct 25 ms 860 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 11 ms 552 KB Output is correct
6 Correct 0 ms 348 KB Output is correct