tjut 4607
来源:互联网 发布:培训用什么域名好 编辑:程序博客网 时间:2024/06/15 04:16
#include <iostream> #include <string.h> #include <stdio.h> using namespace std; const int N=200010; int head[N],to[N],next[N],w[N]; int dis[N],que[N]; bool vis[N]; int edge,m,n; void init() { memset(head,-1,sizeof(head)); edge=0; } void add(int u,int v,int c) { to[edge]=v,w[edge]=c,next[edge]=head[u],head[u]=edge++; to[edge]=u,w[edge]=c,next[edge]=head[v],head[v]=edge++; } void bfs(int s) { memset(vis,0,sizeof(vis)); memset(dis,0,sizeof(dis)); int l,r,v,u; l=r=0; vis[s]=1; dis[s]=0; que[r++]=s; while(r>l) { u=que[l++]; for(int i=head[u]; ~i; i=next[i]) { if(!vis[v=to[i]]) { vis[v]=1; dis[v]=dis[u]+w[i]; que[r++]=v; } } } } int treediameter(int s) { int u,maxl; bfs(s); maxl=0,u=s; for(int i=1; i<=n; i++) if(dis[i]>maxl) u=i,maxl=dis[i]; bfs(u); maxl=0; for(int i=1; i<=n; i++) if(dis[i]>maxl) maxl=dis[i]; return maxl; } int main() { int u,v,d=1,t,i,j,x; scanf("%d",&t); while(t--) { init(); scanf("%d%d",&n,&m); for(i=1;i<=n-1;i++) { scanf("%d%d",&u,&v); add(u,v,1); } int ans=treediameter(1); ans++; while(m--) { scanf("%d",&x); if(x<=ans) printf("%d\n",x-1); else printf("%d\n",(x-ans)*2+ans-1); } } return 0; }
0 0
- tjut 4607
- tjut 5289
- tjut 5288
- tjut 5294
- tjut 2586
- tjut 5296
- tjut 5297
- tjut 5299
- tjut 5384
- tjut 5387
- tjut 5386
- tjut 5381
- tjut 5400
- tjut 5399
- tjut 5396
- tjut 5398
- tjut 5412
- tjut 5410
- 旋转数组的最小数字
- AlertDialog弹出对话框
- iOS开源项目推荐|侧滑与右滑返回手势
- stdf中的FTR和STR的期望数据在哪个字段
- error LNK2001
- tjut 4607
- 上网的基本原理
- asp.net中怎样快速取得插入数据后自动编号的值?
- hdoj-2588-GCD
- Java并发编程:synchronized多线程同步详解
- Tuxedo入门学习
- 几句代码快速集成自定义转场效果+ 全手势驱动
- CodeForces 289A Polo the Penguin and Segments
- 【MVC5】数据迁移之添加字段