关闭

26791: 找树根和孩子

318人阅读 评论(0) 收藏 举报
分类:
题目描述
给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子。
输入
第一行:n(结点个数),m(边数)。
以下m行;每行两个结点x和y,表示y是x的孩子。
输出
第一行:树根:root。
第二行:孩子最多的结点max。
第三行:max的孩子。
样例输入
8 7
4 1
4 2
1 3
1 5
2 6
2 7
2 8

样例输出
4
2
6 7 8
program p26791;
type
  treetype=record
     father:integer;
     num:integer;
     child:array[1..100] of integer;
   end;
var
  tree:array[1..100] of treetype;
  n,m:integer;
  procedure init;
    var e,i,j,k,x,y:integer;
    begin
       readln(n,m);
       for i:=1 to m do
          begin
             readln(x,y);
             tree[y].father:=x;
             inc(tree[x].num);
             tree[x].child[tree[x].num]:=y;
        end;
    end;
    function root:integer;
    var i:integer;
    begin
      for i:=1 to n do
        if tree[i].father=0 then
           begin  root:=I;exit; end;
    end;
  procedure find;
    var k,i,max:integer;
    begin
      k:=1; max:=0;
      for i:=1 to n do
        if tree[i].num>max then
          begin  k:=i; max:=tree[i].num; end;
      writeln(k);
      for i:=1 to max-1 do
         write(tree[k].child[i],' ');
      writeln(tree[k].child[max]);
    end;
begin
  init;   writeln(root); find;
end.
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15175次
    • 积分:108
    • 等级:
    • 排名:千里之外
    • 原创:91篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档