P3942 将军令95pts 悬关
  • 板块灌水区
  • 楼主OrientDragon
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/10/5 17:38
  • 上次更新2024/10/5 19:39:09
查看原帖
P3942 将军令95pts 悬关
1173109
OrientDragon楼主2024/10/5 17:38
#include <bits/stdc++.h>
#define int long long
using namespace std;
int read(int x=0,int f=1){char ch=getchar();while(ch<48||ch>57){if(ch==45)f=-1;ch=getchar();}while(ch>=48&&ch<=57){x=x*10+(ch^48);ch=getchar();}return x*f;}
void write(int x){if(x<0){putchar(45);write(-x);return;}if(x>9)write(x/10); putchar(x % 10 ^ 48);}

const int N=100005;
int n,k,t,cnt,dp[N];
vector<int>e[N];

void dfs(int u,int fa){
	int x=0x3f3f3f3f,y=-0x3f3f3f3f;
	for(int v:e[u]){
		if(v==fa)continue;
		dfs(v,u);
		x=min(x,dp[v]),y=max(y,dp[v]);
	}
	x=-x;
	if(y==-0x3f3f3f3f)dp[u]=1;
	else if(y+1<=x)dp[u]=-x+1;
	else dp[u]=y+1;
	if(dp[u]==k+1){
		cnt++;
		dp[u]=-k;
	}
	return;
}

signed main(){
	n=read(),k=read(),t=read();
	if(k==0){write(n);return 0;}
	for(int i=1,u,v;i<n;i++){
		u=read(),v=read();
		e[u].push_back(v),e[v].push_back(u); 
	}
	dfs(1,0);
	write(cnt);
}

WA on #5

2024/10/5 17:38
加载中...