蒟蒻80分WA求助
查看原帖
蒟蒻80分WA求助
262934
惟有泪千行楼主2020/9/23 12:50

RT,我写了一个非二分的方法,但是WA了两个点,求大佬指正,谢谢!

代码:

#include<bits/stdc++.h>
using namespace std;
#define N 300010
int n,head[N],cnt,ct,ru[N],dep[N],maxn=0;
struct Edge{
	int v,next;
}e[N<<1];
inline void adde(int u,int v){
	e[++cnt]=(Edge){v,head[u]};
	head[u]=cnt;
}
inline int read(){
	int x=0;char ch=getchar();
	while(ch>'9'||ch<'0')ch=getchar();
	while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
	return x;
}
inline void dfs(int x,int fa,int zhi,int dep){
	ct=(int)((zhi+ru[x]+dep-1)/(dep));
	maxn=max(maxn,ct);
//	cout<<ct<<endl;
	for(register int i=head[x];i;i=e[i].next){
		if(e[i].v!=fa)dfs(e[i].v,x,zhi+ru[x],dep+1);
	}
	return;
}
int main(){
	n=read();
	for(register int i=1;i<n;++i){
		int x=read(),y=read();
		adde(x,y);
		adde(y,x);
		++ru[x],++ru[y];
	}
	for(register int i=2;i<=n;++i)--ru[i];
	dfs(1,0,0,1);
	printf("%d\n",maxn);
	return 0;
}
2020/9/23 12:50
加载中...