【BZOJ4813】 [Cqoi2017]小Q的棋盘
2017-05-07 13:56
295 查看
贪心!贪心!!贪心!!!
1、能走完一棵树当然就走完
2、能走到最大深度,到达每个其他点需要消耗的步数为2,除一除就好了
3、不能走到,直接输出步数。。。
1、能走完一棵树当然就走完
2、能走到最大深度,到达每个其他点需要消耗的步数为2,除一除就好了
3、不能走到,直接输出步数。。。
#include <bits/stdc++.h> #define N 109 using namespace std; int n,m,number,first ,x,y,size ,deep ,Max; struct edge { int to,next; void add(int x,int y) { to=y,next=first[x],first[x]=number; } }e[N<<1]; void dfs(int x,int fa) { size[x]=1; deep[x]=deep[fa]+1; if (deep[x]>deep[Max]) Max=x; for (int i=first[x];i;i=e[i].next) if (e[i].to!=fa) { dfs(e[i].to,x); size[x]+=size[e[i].to]; } } int main() { scanf("%d%d",&n,&m); for (int i=1;i<n;i++) { scanf("%d%d",&x,&y); x++,y++; e[++number].add(x,y),e[++number].add(y,x); } dfs(1,0); if (deep[Max]>m) printf("%d\n",m+1); else if (deep[Max]+(n-deep[Max]-1)*2<=m) printf("%d\n",n); else printf("%d\n",deep[Max]+(m-deep[Max])/2+1); return 0; }
相关文章推荐
- bzoj 4813: [Cqoi2017]小Q的棋盘
- BZOJ4813 [Cqoi2017]小Q的棋盘
- bzoj4813 [Cqoi2017]小Q的棋盘 树上DP
- 【bzoj4813】[Cqoi2017]小Q的棋盘 树上dfs+贪心
- 【BZOJ】 4813: [Cqoi2017]小Q的棋盘
- bzoj 4813: [Cqoi2017]小Q的棋盘 树形dp
- bzoj 4813 [Cqoi2017]小Q的棋盘(思维)
- [BZOJ]4813: [Cqoi2017]小Q的棋盘
- bzoj 4813: [Cqoi2017]小Q的棋盘 [树形背包dp]
- BZOJ 4813 [Cqoi2017]小Q的棋盘
- BZOJ 4813 [Cqoi2017]小Q的棋盘
- bzoj 4813 [Cqoi2017]小Q的棋盘
- bzoj4813: [Cqoi2017]小Q的棋盘
- [BZOJ4813][CQOI2017]小Q的棋盘(DP,贪心)
- BZOJ 4813: [Cqoi2017]小Q的棋盘 (树形dp)
- bzoj4813 [Cqoi2017]小Q的棋盘
- BZOJ_4813_[Cqoi2017]小Q的棋盘_dfs
- [bzoj4813][Cqoi2017]小Q的棋盘
- bzoj 4813: [Cqoi2017]小Q的棋盘【树形dp】
- 4813: [Cqoi2017]小Q的棋盘