/ Vijos / 讨论 / 家族 /

求助一下……真心没想通

其实我测试了样例数据,过了样例数据,也测试了某个评论的第二组数据,答案也相同,不过没想通为什么过不了,一个点也不对?求大神指出错误。
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 条评论

  • @ 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

信息

ID
1034
难度
4
分类
数据结构 | 并查集 点击显示
标签
(无)
递交数
9368
已通过
3839
通过率
41%
被复制
15
上传者