http://acm.pku.edu.cn/JudgeOnline/problem?id=1192

Код:
program PKU1192;
{$I-,S-,Q-,R-}
{$M 20000, 0, 20000}

const maxn = 1000;
  none = 10000000;

type integer = longint;

var x, y, c: array[1..maxn] of integer;
    n, ans: integer;

procedure prepare;
var i: integer;
begin
  read(n);
  for i := 1 to n do read(x[i], y[i], c[i]);
end;

procedure search(u, fa: integer);
var v: integer;
begin
  for v := 1 to n do if (abs(x[u] - x[v]) + abs(y[u] - y[v]) = 1) and (v <> fa) then begin
    search(v, u);
    if c[v] > 0 then c[u] := c[u] + c[v];
  end;
  if c[u] > ans then ans := c[u];
end;

procedure main;
begin
  ans := -none;
  search(1, 0);
  writeln(ans);
end;

begin
  prepare;
  main;
end.