差分约束……
Program p2983;
var
n,m,i,j,p:longint;
c:char;
flag:boolean;
d:array[0..5000] of longint;
w:array[1..100100,1..3] of longint;
procedure relax(v,u,w:longint);
begin
if (d[v]>d[u]+w) then
begin
d[v]:=d[u]+w;
flag:=false;
end;
end;
procedure bellman_ford;
var
i,j,k:longint;
begin
flag:=true;
// w[i,3]=-1 w[i,2]-w[i,1]>0 ->w[i,1]-w[i,2]<0 ->w[i,1]-w[i,2]<=-1
// w[i,3]>-1 w[i,2]-w[i,1]=w[i,3] ->w[i,2]-w[i,1]<=w[i,3] w[i,1]-w[i,2]<=-w[i,3]
for k:=1 to n+1 do
begin
flag:=true;
for i:=1 to m do
begin
if w[i,3]=-1 then
begin
relax(w[i,1],w[i,2],-1);
end
else
begin
relax(w[i,2],w[i,1],w[i,3]);
relax(w[i,1],w[i,2],-w[i,3]);
end;
end;
if flag then break;
end;
if flag then writeln('Reliable')
else writeln('Unreliable');
end;
begin
while not seekeof do
begin
fillchar(d,sizeof(d),0);
readln(n,m);
for i:=1 to m do
begin
read(c);
if (c='p') or (c='P') then
begin
readln(w[i,1],w[i,2],w[i,3]);
end
else
begin
readln(w[i,1],w[i,2]);
w[i,3]:=-1;
end;
end;
bellman_ford;
end;
end.