- 家族
- 2014-01-19 16:56:39 @
其实我测试了样例数据,过了样例数据,也测试了某个评论的第二组数据,答案也相同,不过没想通为什么过不了,一个点也不对?求大神指出错误。
program a01;
var
point,k1,k2,n,m,p,i,j,number:longint;
a:array[1..5003] of longint;
begin
read(n,m,p);
fillchar(a,sizeof(a),0);
for i := 1 to m do
begin
read(k1,k2);
if (a[k1]=0) and (a[k2]=0) then
begin
number:=number+1;
a[k1]:=number;
a[k2]:=number;
end;
if a[k1]<>a[k2] then begin
if (a[k1]<>0) and (a[k2]=0) then a[k2]:=a[k1]
else
if (a[k1]=0) and (a[k2]<>0) then a[k1]:=a[k2]
else
if (a[k1]<>0) and (a[k2]<>0) then begin
point:=a[k2];
for j := 1 to n do
if a[j]= point then a[j]:=a[k1];
end;
end;
end;
for i := 1 to p do
begin
read(k1,k2);
if (a[k1]=a[k2]) and (a[k1]<>0) then writeln('yes')
else writeln('no');
end;
end.
难道是代码打得太难看了?全部wa……
4 条评论
-
zxu22 LV 10 @ 2014-03-22 22:41:10
其实是y和n是大写的问题……代码没有出错,谢谢各位大神的帮助
-
2014-01-20 17:52:28@
你去学一下并查集然后就会明白为什么自己错了
-
2014-01-19 19:19:29@
这个题是标准的并查集来着。。
-
2014-01-19 17:46:12@
lz去打并查集吧……我在打并查集前已经用各种方法错了各种次了……而且并查集多好打……
- 1