hospital.pas

来自「PASCAL光盘资料PASCAL光盘资料PASCAL光盘资料」· PAS 代码 · 共 47 行

PAS
47
字号
program hospital(input, output);
var w : array [1..100] of longint;
    g : array [1..100, 1..100] of longint;
    n, i, j, k, l, r, min,s : longint;

begin
  assign(input, 'hospital.in'); reset(input);
  readln(n);
  for i := 1 to n do
    for j := 1 to n do
      g[i][j] := 1000000;
  for i := 1 to n do
    begin
      g[i][i] := 0;
      readln(w[i], l, r);
      if l > 0
        then begin
               g[i][l] := 1;
               g[l][i] := 1
             end;
      if r > 0
        then begin
               g[i][r] := 1;
               g[r][i] := 1
             end
    end;

  for k := 1 to n do
    for i := 1 to n do
      if i <> k then
        for j := 1 to n do
          if (i <> j) and (k <> j) and (g[i][k] + g[k][j] < g[i][j])
            then g[i][j] := g[i][k] + g[k][j];

  min := maxlongint;
  for i := 1 to n do
    begin
      s:=0;
      for j := 1 to n do
        inc(s, g[i][j] * w[j]);
      if s < min then min := s
         end;

  writeln(min);

  close(input)
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?