| 比赛 | 
    20101110 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    奶牛派对 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    wo shi 刘畅 | 
    运行时间 | 
    0.000 s  | 
    | 代码语言 | 
    Pascal | 
    内存使用 | 
    0.00 MiB  | 
    | 提交时间 | 
    2010-11-10 19:53:36 | 
显示代码纯文本
var
  n,m,p,x,y,i,j,max:longint;
  f,g:array[0..1000,0..1000]of longint;
  w,e:array[0..1000]of boolean;
  a,b:array[0..1001]of longint;
procedure djs1;
var
  i,j,s,h,d,ma:longint;
begin
  w[p]:=true;
  s:=1;
  d:=p;
  while s<n do
  begin
    inc(s);
    h:=0;
    ma:=maxlongint;
    for i:=1 to n do
    if (not w[i]) then
    begin
     if a[d]+f[d,i]<a[i] then
      a[i]:=a[d]+f[d,i];
      if a[i]<ma then
      begin
        ma:=a[i];
        h:=i;
      end;
    end;
    w[h]:=true;
    d:=h;
  end;
end;
procedure djs2;
var
  i,j,s,d,h,ma:longint;
begin
  e[p]:=true;
  s:=1;
  d:=p;
  while s<n do
  begin
    inc(s);
    ma:=maxlongint;
    for i:=1 to n do
    if not e[i] then
    begin
      if b[d]+g[d,i]<b[i] then
      b[i]:=b[d]+g[d,i];
      if b[i]<ma then
      begin
        ma:=b[i];
        h:=i;
      end;
    end;
    e[h]:=true;
    d:=h;
  end;
end;
begin
  assign(input,'party.in'); reset(input);
  assign(output,'party.out'); rewrite(output);
  readln(n,m,p);
  for i:=1 to n do
   for j:=1 to n do
   begin
     f[i,j]:=10000000;
     g[i,j]:=10000000;
   end;
  for i:=1 to n do
  begin
    a[i]:=10000000;
    b[i]:=10000000;
  end;
  for i:=1 to m do
  begin
    readln(x,y,f[x,y]);
    if x=p then a[y]:=f[x,y];
    g[y,x]:=f[x,y];
    if y=p then b[x]:=g[y,x];
  end;
  djs1;
  djs2;
  max:=-maxlongint;
  for i:=1 to n do
  begin
     if (a[i]<10000000)and(b[i]<10000000)
     and(a[i]+b[i]>max) then
     max:=a[i]+b[i];
  end;
  writeln(max);
  close(input);
  close(output);
end.