Submission #2474589


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

const int maxn = 100010;
int n,k,s[maxn],num[maxn],need[maxn];
int dp[maxn][2][3];
vector<int> tree[maxn];

int dfs1(int v,int u){
	num[v] = 1;need[v] = 0;
	for(int i=0;i<tree[v].size();i++){
		int t = tree[v][i];
		if(t==u) continue;
		num[v] += dfs1(t,v);
		if(num[t]>=k) need[v]++;			
	}
	return num[v];
}

int dfs2(int v,int u){
    int ans = 0;
    if(n-num[v]>=k&&num[v]>=2) ans = 1;
    int f = (n - num[v])>=k?1:0;
	for(int i=0;i<tree[v].size();i++){
		int t = tree[v][i];
		if(t==u) continue;
		ans = max(ans,dfs2(t,v));
		ans = max(ans,need[t]+s[v]-dp[t][1][0]+f);
	}
	return ans;
}

void dfs3(int v,int u){
    s[v] = 0;
	for(int i=0;i<tree[v].size();i++){
		int t = tree[v][i];
		if(t==u) continue;
		s[v] += dp[t][1][0];
		dfs3(t,v);
	}
}

int dfs(int v,int u){
	dp[v][1][0] = 0;
	if(num[v]>=k) dp[v][1][0] = 1;
	for(int i=0;i<tree[v].size();i++){
		int t = tree[v][i];
		int f = num[t]>=k?1:0;
		if(t==u) continue;
		if(dp[t][1][0]>=0) dp[v][1][0] = max(dp[v][1][0],need[v]+dp[t][1][0]-f);
		else dp[v][1][0] = max(dp[v][1][0],need[v]+dfs(t,v)-f);
	}
	return dp[v][1][0];
}

int main(){
	while(cin>>n>>k){
	    memset(dp,-1,sizeof dp);
	    for(int i=1;i<n;i++){
	    	int x,y;cin>>x>>y;
	    	tree[x].push_back(y);
	    	tree[y].push_back(x);
		}
		dfs1(1,0);	
		dfs(1,0);
		dfs3(1,0); 
	    cout<<dfs2(1,0)<<endl;
	    for(int i=1;i<=n;i++) tree[i].clear(); 
	}
	return 0;
} 

Submission Info

Submission Time
Task E - Tree Separator
User cwlyzj
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1510 Byte
Status WA
Exec Time 110 ms
Memory 14336 KB

Judge Result

Set Name All
Score / Max Score 0 / 100
Status
AC × 30
WA × 5
Set Name Test Cases
All 00_sample_00, 00_sample_01, 00_sample_02, 00_sample_03, 00_sample_04, 00_sample_05, 10_small_0, 10_small_1, 10_small_2, 10_small_3, 10_small_4, 20_random_0, 20_random_1, 20_random_2, 20_random_3, 20_random_4, 30_small_k_0, 30_small_k_1, 30_small_k_2, 30_small_k_3, 30_small_k_4, 30_small_k_5, 30_small_k_6, 30_small_k_7, 30_small_k_8, 30_small_k_9, 90_star_0, 90_star_1, 91_path_0, 91_path_1, 92_star_like_0, 92_star_like_1, 92_star_like_2, 92_star_like_3, 92_star_like_4
Case Name Status Exec Time Memory
00_sample_00 AC 3 ms 4992 KB
00_sample_01 AC 3 ms 4992 KB
00_sample_02 AC 3 ms 4992 KB
00_sample_03 AC 3 ms 4992 KB
00_sample_04 AC 3 ms 4992 KB
00_sample_05 AC 3 ms 4992 KB
10_small_0 AC 3 ms 4992 KB
10_small_1 AC 3 ms 4992 KB
10_small_2 AC 3 ms 4992 KB
10_small_3 AC 3 ms 4992 KB
10_small_4 AC 3 ms 4992 KB
20_random_0 AC 69 ms 7680 KB
20_random_1 AC 8 ms 5248 KB
20_random_2 AC 110 ms 9216 KB
20_random_3 AC 33 ms 6272 KB
20_random_4 AC 12 ms 5376 KB
30_small_k_0 WA 55 ms 7168 KB
30_small_k_1 AC 63 ms 7424 KB
30_small_k_2 WA 22 ms 5888 KB
30_small_k_3 AC 84 ms 8192 KB
30_small_k_4 AC 110 ms 8960 KB
30_small_k_5 WA 15 ms 5504 KB
30_small_k_6 AC 61 ms 7296 KB
30_small_k_7 WA 31 ms 6144 KB
30_small_k_8 WA 28 ms 6144 KB
30_small_k_9 AC 60 ms 7424 KB
90_star_0 AC 89 ms 9592 KB
90_star_1 AC 88 ms 9592 KB
91_path_0 AC 106 ms 14336 KB
91_path_1 AC 107 ms 13824 KB
92_star_like_0 AC 96 ms 9468 KB
92_star_like_1 AC 98 ms 9468 KB
92_star_like_2 AC 99 ms 9468 KB
92_star_like_3 AC 104 ms 9468 KB
92_star_like_4 AC 95 ms 9468 KB