1 条题解
-
0Guest LV 0 MOD
-
0
#include<bits/stdc++.h> const int maxn=300; inline const void read(int &a) { a=0; char c=getchar(); while(c<'0'||c>'9')c=getchar(); while(c>='0'&&c<='9') { a=(a<<1)+(a<<3)+c-'0'; c=getchar(); } } inline const void write(int a) { if(a>=10)write(a/10); putchar(a%10+'0'); } int d=0,n,dis[maxn],step,point[maxn],to[maxn],next[maxn],big=-1; bool been[maxn]; inline const void add(int a,int b) { next[++d]=point[a]; to[d]=b; point[a]=d; } const void dfs(int p) { big=std::max(big,dis[p]); been[p]=true; int side=point[p]; while(side>=0) { if(!been[to[side]]){dis[to[side]]=dis[p]+1;dfs(to[side]);} side=next[side]; } } int main() { memset(been,false,sizeof(been)); memset(dis,0,sizeof(dis)); memset(point,-1,sizeof(point)); read(n);read(step);step++; int x,y; for(int i=1;i<=n-1;i++) {read(x);read(y);add(x,y);add(y,x);} dis[0]=1; dfs(0); if(step<=big)write(step); else { int rest=(step-big)/2,ans=rest+big; write(ans); } return 0; }
- 1
信息
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 2
- 已通过
- 1
- 通过率
- 50%
- 上传者