求一棵树的直径。题目没说数据范围,无论如何显然是O(n)的。

这里用了dfs,先找任一点的最远点,再从这个最远点找一次最远点,后一个的两点距离就是答案。

View Code

 1 program pku1985(input,output); 2 type 3    node    = ^link; 4    link    = record  5          goal,w : longint; 6          next   : node; 7       end;         8 var 9    l   : array[0..50000] of node;10    d   : array[0..50000] of longint;11    v   : array[0..50000] of boolean;12    n,m : longint;13 procedure add(xx,yy,ww :longint );14 var15    tt : node;16 begin17    new(tt);18    tt^.next:=l[xx];19    tt^.goal:=yy;20    tt^.w:=ww;21    l[xx]:=tt;22 end; { add }23 procedure init;24 var25    i,xxx,yyy,www : longint;26 begin27    readln(n,m);28    for i:=1 to n do29       l[i]:=nil;30    for i:=1 to m do31    begin32       readln(xxx,yyy,www);33       add(xxx,yyy,www);34       add(yyy,xxx,www);35    end;36 end; { init }37 procedure dfs(now,dist : longint );38 var39    t : node;40 begin41    d[now]:=dist;42    t:=l[now];43    while t<>nil do44    begin45       if not v[t^.goal] then46       begin47      v[t^.goal]:=true;48      dfs(t^.goal,dist+t^.w);49       end;50       t:=t^.next;51    end;52 end; { dfs }53 procedure main;54 var55    i,maxn,maxl : longint;56 begin57    fillchar(d,sizeof(d),0);58    fillchar(v,sizeof(v),false);59    v[1]:=true;60    dfs(1,0);61    maxl:=0;62    for i:=1 to n do63       if d[i]>maxl then64       begin65      maxl:=d[i];66      maxn:=i;67       end;68    fillchar(d,sizeof(d),0);69    fillchar(v,sizeof(v),false);70    v[maxn]:=true;71    dfs(maxn,0);72    maxl:=0;73    for i:=1 to n do74       if d[i]>maxl then75      maxl:=d[i];76    writeln(maxl);77 end; { main }78 begin79    init;80    main;81 end.

转载于:https://www.cnblogs.com/neverforget/archive/2012/03/22/2411216.html

pku1985 Cow Marathon相关推荐

  1. poj1985 Cow Marathon(树的直径#入门)

    poj1985 Cow Marathon(树的直径) Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 9110 Accepted: ...

  2. poj 1985 Cow Marathon 【树的直径】

    求树的直径 /* POJ:1985 Cow Marathon 2014/10/12/21:18 Yougth*/ #include <cstdio> #include <iostre ...

  3. 【树的直径】 POJ 1985 Cow Marathon

    给出一棵树 ,和边的权值 求权值最长的一条直径 两次bfs求 第一次以任意点开始 BFS求出第一个端点 第二次以第一次得到的端点 BFS求出第二个端点 #include <cstdio> ...

  4. POJ 1985 Cow Marathon

    此题求的是树的最长链, 要注意此题不能用dis[maxn][maxn]来记录a, b两点的距离,这样会超空间, 也就是超内存,要用另一种储存方式储存.此题思想很简单, 随便选一个点,搜此点能到的最远距 ...

  5. 0x63.图论 - 树的直径与最近公共祖先

    目录 一.树的直径(Diameter) 1.树形DP求树的直径 2.两次BFS/DFS求树的直径 1.POJ 1985.Cow Marathon(DFS求树的直径模板题) 2.AcWing 350. ...

  6. ajax离开页面方法,jQuery中ajax调用当前页面方法

    $.ajax({ type: 'POST', url: 'AddressManager.aspx/GetProvince',//AddressManager.aspx当前页面 data: '{cach ...

  7. 用html2canvas长按保存h5页面,html2canvas - 微信中长按存图 - 将h5活动结果保存到本地...

    现在有很多在微信里流行的h5活动页.这些小h5大部分都是简单的交互然后得出一个abcd早就拟定好的结果,根据你的选项分几种情况,最终得到其中一个作为你测试的答案.比如这个就是最后那张结果图: 当时自己 ...

  8. 杭电oj题目题型分类(转)

    1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...

  9. HDOJ题目分类大全

    版权声明:本文为博主原创文章,欢迎转载,转载请注明本文链接! https://blog.csdn.net/qq_38238041/article/details/78178043 杭电里面有很多题目, ...

最新文章

  1. js传入参数为字符串问题
  2. velocity 基础指令
  3. C语言将两个正整数连接
  4. 在 iOS 或者 Mac OS X 中将 NSDictionary 映射为本地对象的方法
  5. mysql数据库分隔符_MySQL对分隔符的处理(一)
  6. 一文教你用java实现儿时的超级玛丽游戏
  7. pc工具不支持stb的加密方式_那些工作中常用的实用工具
  8. 爆炸了!刚刚!小姐姐说她找了个程序员男友
  9. php ajax base64,php,javascript_AJax post BASE64编码到后台,php,javascript - phpStudy
  10. pip 安装 sklearn 教程
  11. unity安装2020或2019出现空白错误
  12. win10无敌隐身术
  13. [词性] 十一、介词 2 地点状语在前,时间状语在后 [ at ]
  14. 你的颜值打几分?——基于tensorflow实现人脸打分模型
  15. SQL优化步骤(建议收藏)
  16. 使用wget报错-颁发的证书已经过期。
  17. 数字信号处理之期中斩神篇(一重 搬山)
  18. 召集令 | 2021奖金加码的“硬核”港科百万创赛又来了!
  19. C# 语言历史版本特性(C# 1.0到C# 8.0汇总
  20. docker jvm调优 tomcat_docker+tomcat 启动时非常慢原因之JRE /dev/random阻塞

热门文章

  1. BZOJ4754 JSOI2016独特的树叶(哈希)
  2. 20172310 2017-2018-2 《程序设计与数据结构》第八周学习总结
  3. sqlite3之基本操作(二)
  4. apache rewrite规则详解
  5. 确认对话框ConfirmDialog和选择对话框OptionDialog
  6. chrome拦截弹窗问题的两种解决方式
  7. npm i -g windows-build-tools安装出错解决方法
  8. HTML`CSS_网站页面不同浏览器兼容性问题解决
  9. Socket java.net.SocketException: Connection reset的解决方案
  10. dpkg安装deb缺少依赖包的解决方法