• pku1985 Cow Marathon


    求一棵树的直径。题目没说数据范围,无论如何显然是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 var
    15 tt : node;
    16 begin
    17 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 var
    25 i,xxx,yyy,www : longint;
    26 begin
    27 readln(n,m);
    28 for i:=1 to n do
    29 l[i]:=nil;
    30 for i:=1 to m do
    31 begin
    32 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 var
    39 t : node;
    40 begin
    41 d[now]:=dist;
    42 t:=l[now];
    43 while t<>nil do
    44 begin
    45 if not v[t^.goal] then
    46 begin
    47 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 var
    55 i,maxn,maxl : longint;
    56 begin
    57 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 do
    63 if d[i]>maxl then
    64 begin
    65 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 do
    74 if d[i]>maxl then
    75 maxl:=d[i];
    76 writeln(maxl);
    77 end; { main }
    78 begin
    79 init;
    80 main;
    81 end.



  • 相关阅读:
    combobox获取dataset部分数据的方法
    vs2008设置Jquery自动感知方法
    iOS7 初体验
    数据采集[即与 WEB 相关的功能函数]
    javascript 时间倒计时效果
    有进度条圆周率计算
    python科学计算库
    python随笔
    jieba库
    数据分析模块pandas
  • 原文地址:https://www.cnblogs.com/neverforget/p/2411216.html
Copyright © 2020-2023  润新知