p1092.pas
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 99 行
PAS
99 行
PROGRAM p1092;
VAR
// f :text;
dic :array[1..31]of string;
dicnum :longint;
pre :array[1..31,1..31]of real;
n :longint;
ans :boolean;
i :longint;
step :longint;
PROCEDURE floyd;
var
i,j,k :longint;
begin
for K:=1 to dicnum do
for I:=1 to dicnum do
if i<>k then
for j:=1 to dicnum do
if (j<>k)and(pre[i,k]<>0)and(pre[k,j]<>0)and(pre[i,k]*pre[k,j]>pre[i,j]) then pre[i,j]:=pre[i,k]*pre[k,j];
ans:=false;
for I:=1 to dicnum do
for j:=1 to dicnum do
if (pre[i,j]*pre[j,i]>1) then
begin
ans:=true;
exit;
end;
end;
FUNCTION check(s:string):longint;
var
I :longint;
begin
for i:=1 to dicnum do
if dic[i]=s then
begin
check:=i;
exit;
end;
check:=-1;
end;
PROCEDURE readin;
var
i,j :integer;
a,b :longint;
d :real;
s :string;
ch :char;
begin
readln(n);
for i:=1 to n do
begin
s:='';
while true do
begin
read(ch);
if ch=' ' then break;
s:=s+ch;
end;
a:=check(s);
read(d);
read(ch);
readln(s);
b:=check(s);
pre[a,b]:=d;
end;
end;
BEGIN
//assign(input,'p1092.in');
//reset(input);
readln(dicnum);
step:=0;
while dicnum>0 do
begin
inc(step);
for I:=1 to dicnum do
readln(dic[i]);
fillchar(pre,sizeof(pre),0);
readin;
floyd;
write('Case ',step,': ');
if ans then writeln('Yes') else writeln('No');
readln;
readln(dicnum);
end;
//close(f);
END.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?