首页 > 试题广场 >

var map : array[1..100, 1..1

[填空题]
var
  map : array[1..100, 1..100] of longint;
  sum, weight, visit : array[1..100] of longint;
  n, i, x, y, ans, ansn : longint;
procedure dfs(node : longint);
var
  v, maxw : longint;
begin
  visit[node] := 1;
  sum[node] := 1;
  maxw := 0;
  for v := 1 to n do
  begin
    if (map[node][v] = 0) or (visit[v] <> 0) then
      continue;
    dfs(v);
    inc(sum[node], sum[v]);
    if sum[v] > maxw then
      maxw := sum[v];
  end;
  if n - sum[node] > maxw then
    maxw := n - sum[node];
  weight[node] := maxw;
end;
begin
  fillchar(map, sizeof(map), 0);
  fillchar(sum, sizeof(sum), 0);
  fillchar(weight, sizeof(weight), 0);
  fillchar(visit, sizeof(visit), 0);
  readln(n);
  for i := 1 to n - 1 do
  begin
    read(x, y);
    map[x, y] := 1;
    map[y, x] := 1;
  end;
  dfs(1);
  ans := n;
  ansn := 0;
  for i := 1 to n do
    if weight[i] < ans then
    begin
      ans := weight[i];
      ansn := i;
    end;
  writeln(ansn, ' ', ans);
end.

输入:11
1 2
1 3
2 4
2 5
2 6
3 7
7 8
7 11
6 9
9 10
输出:1

这道题你会答吗?花几分钟告诉大家答案吧!