题目:Park Visit


题意:给定一棵树,从树中的任意选一个顶点出发,遍历K个点的最短距离是多少?(每条边的长度为1)

解析:就是求树的最长链,假设求出的树的最长链所包含的点数为m,那么如果K<=m,那么答案就是K-1,否则就是(K-m)*2+m-1


#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;
}

最新文章

  1. GNU/Linux复习笔记(2)
  2. ACM 对决
  3. SQL Server里PIVOT运算符的”红颜祸水“
  4. ArcGIS中如何导出单个矢量要素图形
  5. 索引 使用use index优化sql查询
  6. 将批量下载的博客导入到手机后,通过豆约翰博客阅读器APP(Android手机)进行浏览,白字黑底,保护眼睛,图文并茂。
  7. 子树大小平衡树(Size Balanced Tree,SBT)操作模板及杂谈
  8. oc语言--语法
  9. SQL常用语句集合(不断更新)
  10. php学习笔记——CSS缓存问题
  11. vs2013 中已经添加了引用,编译还是提示没有添加引用
  12. 所谓“脚本(Script)”——个人见解浅谈
  13. 简单实现ASP.Net MVC网页播放音乐
  14. java多线程中的调度策略
  15. scrapy 爬取糗事百科
  16. ajax的请求,参数怎么管理?
  17. Transcranial magnetic stimulation (TMS)
  18. 知识点:MySQL表名不区分大小写的设置方法
  19. 解决web网站被挂马清除方法
  20. Retry模式

热门文章

  1. DataTable转Json(兼容easyUI特殊json分页)
  2. thinkphp5学习总结!
  3. vim下如何去掉windows编辑的文件中的^M
  4. 数组的splice方法
  5. appium无ID、name定位处理【转】
  6. Android 7.0 新增功能和api
  7. wpf 如果列表加载超多数据变的卡顿时,使用VirtualizingStackPanel
  8. Amazon电商数据分析——数据获取
  9. H5的简介
  10. 037 SparkSQL ThriftServer服务的使用和程序中JDBC的连接