您的位置:首页 > 其它

26791: 找树根和孩子

2015-07-10 09:46 225 查看
题目描述
给定一棵树,输出树的根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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: