【最短路】【120715测试】【朱全明NOIP模拟题】Party

【最短路】【120715测试】【朱全明NOIP模拟题】Party_第1张图片

【最短路】【120715测试】【朱全明NOIP模拟题】Party_第2张图片

 
party.in
4 8 2
1 2 4
1 3 2
1 4 7
2 1 1
2 3 5
3 1 2
3 4 4
4 2 3
party.out
10

 

看了题目都应该直到是最短路,只需两次即可

一次求出x到所有点的最短路 ,这个很好实现

第二次求出所有点到x的最短路,这个只需要在迭代更新的时候吧map[k,j]改成map[j,k]即可,这样就成了反向边,就可以求出所有点到x的最短路

program party;

var
  n,m,x:longint;
  map:array[0..1000+10,0..1000+10] of longint;
  dist:array[0..1000+10] of longint;//x 到 所有点的最短距离
  dis:array[0..1000+10] of longint;//所有点 到 x 的最短距离
  h:array[0..1000+10] of boolean;

procedure init;
begin
  assign(input,'party.in');
  assign(output,'party.out');
  reset(input);
  rewrite(output);
end;
procedure outit;
begin
  close(input);
  close(output);
  halt;
end;

procedure readdata;
var
  i,xx,yy:longint;
begin
  read(n,m,x);
  fillchar(map,sizeof(map),$7);
  for i:=1 to m do
    read(xx,yy,map[xx,yy]);
end;

procedure dij;
var
  i,j,k,min:longint;
begin
  for i:=1 to n do
  begin
    //find min
    min:=maxlongint; k:=0;
    for j:=1 to n do
      if (not h[j])and(min>dist[j]) then
      begin
        min:=dist[j];k:=j;
      end;
    //color it
    h[k]:=true;
    //renew
    for j:=1 to n do
    begin
      if (not h[j])and(dist[j]>dist[k]+map[k,j]) then
        dist[j]:=dist[k]+map[k,j];
    end;
  end;
end;

procedure dijs;
var
  i,j,k,min:longint;
begin
  for i:=1 to n do
  begin
    //find min
    min:=maxlongint;k:=0;
    for j:=1 to n do
      if (not h[j])and(min>dis[j]) then
      begin
        min:=dis[j];k:=j;
      end;
    //color it
    h[k]:=true;
    //renew
    for j:=1 to n do
      if (not h[j])and(dis[j]>dis[k]+map[j,k]) then
        dis[j]:=dis[k]+map[j,k];
  end;
end;

procedure main;
var
  i,sum,max:longint;
begin
  {//O(n3)的算法
  for k:=1 to n do
    for i:=1 to n do
      for j:=1 to n do
        if map[i,j]>map[i,k]+map[k,j] then
          map[i,j]:=map[i,k]+map[k,j];
  for i:=1 to n do dist[i]:=map[i,x]+map[x,i];
  dist[x]:=0;
  max:=0;
  for i:=1 to n do
    if max

 

 

【最短路】【120715测试】【朱全明NOIP模拟题】Party_第3张图片

转载于:https://www.cnblogs.com/oijzh/archive/2012/08/20/2647118.html

你可能感兴趣的:(【最短路】【120715测试】【朱全明NOIP模拟题】Party)