Cod sursa(job #68072)

Utilizator vanila0406Ionescu Victor vanila0406 Data 26 iunie 2007 13:34:18
Problema Sate Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.81 kb
program sate;
type lista=^node;
        node=record
                nod,lung:longint;
                urm:lista;
        end;
var f,g:text;
        n,m,x,y:longint;
        b:array[1..30001] of byte;
        v:array[1..30001] of lista;


procedure add(var p:lista;nd,lng:longint);
begin
        if p=nil then
                begin
                        new(p);
                        p^.nod:=nd;
                        p^.lung:=lng;
                        p^.urm:=nil;
                end else
                add(p^.urm,nd,lng);
end;

procedure iofile;
var i,a,b,c:longint;
begin
        assign(f,'sate.in');
        reset(f);
        assign(g,'sate.out');
        rewrite(g);
        readln(f,n,m,x,y);
        for i:=1 to n do
                v[i]:=nil;
        for i:=1 to m do
                begin
                        readln(f,a,b,c);
                        add(v[a],b,c);
                        add(v[b],a,-c);
                end;
        close(f);
end;


procedure bfs(nd,lc:longint);
var q:lista;
        un:longint;
begin
        if nd=y then
                begin
                        writeln(g,lc);
                        close(g);
                        halt;
                end else
        begin
                q:=v[nd];
                while q<>nil do
                        begin
                                un:=q^.nod;
                                if b[un]=0 then
                                        begin
                                                b[un]:=1;
                                                bfs(un,lc+q^.lung);
                                        end;
                                q:=q^.urm;
                        end;
        end;
end;




begin
        iofile;
        b[x]:=1;
        bfs(x,0);
end.