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
