/ Vijos / 讨论 / Vijos /

管理员看看 P1022 和 P1023 怎么用一个程序都可以过

P1022 和 P1023 有什么不同吗?

var n,i,j,x,y,z,k:longint;

mp:array[1..200,1..200] of boolean;

ok:array[1..200] of boolean;

procedure dfs(i:longint);

var j:longint;

begin

ok[i]:=false;

for j:= 1 to n do

if ok[j] and mp then dfs(j);

end;

begin

readln(n);

fillchar(mp,sizeof(mp),false);

for i:= 1 to n do

begin

read(j);

mp:=true;

while j 0 do

begin

mp:=true;

read(j);

end;

end;

for i:= 1 to 2 do

for x:= 1 to n do

for y:= 1 to n do

for z:= 1 to n do

if ( mp[x,z] and mp[z,y] ) then mp[x,y]:=true;

k:=0;

fillchar(ok,sizeof(ok),true);

for x:= 1 to n do

if ok[x] then

begin

dfs(x);

inc(k);

end;

writeln(k);

end.

4 条评论

  • @ 2009-07-07 18:39:59

    原理简述

    p1022是无向图,p1023是有向图。

    无向图和有向图,在这里,其实没多大区别,

    当然可以用一个程序过。

  • @ 2009-07-07 10:03:02

    似乎是的...

    很久之前就是这样了。。。没改。。。

  • @ 2009-07-06 21:14:31

    兄弟……你们俩落伍了……这是题目上去时就知道的问题了……

  • @ 2009-07-06 21:06:35

    wa!!!!

    是真的,一个程序过两题。兄弟们快来测呀!!!!!!!!!!!!!!!!!WSWSWSWSWSWSWSWSWSWS

  • 1