比赛 20111107 评测结果 WWWWWWWAAW
题目名称 燃烧 最终得分 20
用户昵称 lizhe 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2011-11-07 11:30:01
显示代码纯文本
program firez;
const
  maxtin=10000000;
var
  i,j,l,n,x0,y0,x1,x2,y1,y2,t,num,minn:longint;
  flag:array[1..200]of boolean;
  rudu:array[1..200]of longint;
  a:array[-400..400,-400..400]of longint;
  map:array[1..200,1..200]of real;
  d:array[1..200]of real;
  max,min,mi:real;
procedure init;
begin
  assign(input,'firez.in');
  reset(input);
  assign(output,'firez.out');
  rewrite(output);
  read(n);
  for i:=1 to 3*n do
    for j:=1 to 3*n do
      map[i,j]:=maxtin;
  for i:=1 to n do
  begin
    read(x1,y1,x2,y2,t);
    x1:=x1*2; y1:=y1*2; x2:=x2*2; y2:=y2*2;
    x0:=(x1+x2) div 2;
    y0:=(y1+y2) div 2;
    if a[x1,y1]=0 then
    begin
      inc(num);
      a[x1,y1]:=num
    end;
    if a[x2,y2]=0 then
    begin
      inc(num);
      a[x2,y2]:=num
    end;
    if a[x0,y0]=0 then
    begin
      inc(num);
      a[x0,y0]:=num
    end;
    map[a[x1,y1],a[x2,y2]]:=t;
    map[a[x1,y1],a[x0,y0]]:=t/2;
    map[a[x2,y2],a[x0,y0]]:=t/2;
    map[a[x2,y2],a[x1,y1]]:=t;
    map[a[x0,y0],a[x1,y1]]:=t/2;
    map[a[x0,y0],a[x2,y2]]:=t/2;
    rudu[a[x0,y0]]:=1;
  end
end;

procedure dijkstra;
begin
  fillchar(flag,sizeof(flag),true);
  fillchar(d,sizeof(d),0);
  for i:=1 to num do
    d[i]:=map[l,i];
  flag[l]:=false;
  for i:=1 to num-1 do
  begin
    mi:=maxtin;
    for j:=1 to num do
      if (mi>d[j]) and flag[j] then
      begin
        mi:=d[j];
        minn:=j
      end;
    flag[minn]:=false;
    for j:=1 to num do
      if d[j]>d[minn]+map[minn,j] then
        d[j]:=d[minn]+map[minn,j]
  end;
  max:=0;
  for i:=1 to num do
    if (max<d[i]) and (d[i]<maxtin) then
      max:=d[i]
end;

procedure main;
begin
  min:=0;
  for l:=1 to num do
    if rudu[l]=0 then
    begin
      dijkstra;
      if min<max then
        min:=max
    end
end;

procedure print;
begin
  writeln(min:0:4);
  close(input);
  close(output)
end;

begin
  init;
  main;
  print
end.