第一次看到这题怎么也不会想到是并查集题目…星期五第一次看到这题,到今天做出来,实在是废了好多功夫。看了很多人的解题都有same和diff数组,我也写了,后来发现不对啊两个数组的话find函数怎么写呢?hash也很久没写了,导致自己测试的时候有两个点没过是因为hash弄错了。

我的程序里f[x]= same[x] (x<=max)

                   = diff[x-max] (x>max)

总算,最后还是通过了。又是一道想不到思路就写不出的题。据说这题和食物链很像,那么食物链就是我的下一个目标~总感觉并查集是有点抽象的,我还没想到它怎么和树形结构具体联系起来。

BTW,vijos的数据挺弱的…

program vijos_p1112;
const BLOCK=40000;
var hash,f:array[0..80000] of longint;
    n,m,i,a,b,t:longint;
    s:string;
function haha(x:longint):longint;
var t:longint;
begin
  t:=x mod 32567;
  while (hash[t]<>-1) and (hash[t]<>x) do inc(t);
  exit(t);
end;

function find(x:longint):longint;
begin
  if f[x]=x then exit(x) else exit(find(f[x]));
end;

procedure union(x,y:longint);
var fx,fy:longint;
begin
  fx:=find(x);
  fy:=find(y);
  if fx<>fy then f[fx]:=fy;
end;

begin
  readln(n);
  readln(m);
  if m=0 then
    begin
      writeln(0);
      halt;
    end;
  for i:=1 to 40000 do
    begin
      f[i]:=i;
      hash[i]:=-1;
    end;
  for i:=1 to m do
    begin
      readln(s);
      t:=pos(' ',s);
      val(copy(s,1,t-1),a);
      delete(s,1,t);
      t:=pos(' ',s);
      val(copy(s,1,t-1),b);
      delete(s,1,t);
      if s='even' then
        begin
          if find(haha(a-1))=find(haha(b+BLOCK)) then
            begin
              writeln(i-1);
              halt;
            end
          else
            begin
              union(haha(a-1),haha(b));
              union(haha(a-1+BLOCK),haha(b+BLOCK));
            end;
        end
      else
        begin
          if find(haha(a-1))=find(haha(b)) then
            begin
              writeln(i-1);
              halt;
            end
          else
            begin
              union(haha(a-1),haha(b+BLOCK));
              union(haha(a-1+BLOCK),haha(b));
            end;
        end;
    end;
  writeln(m);
end.
小胖的奇偶

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-10
  • 2021-10-12
  • 2020-11-18
  • 2022-12-23
  • 2021-09-21
  • 2021-11-08
猜你喜欢
  • 2021-10-26
  • 2022-12-23
  • 2022-12-23
  • 2021-05-22
  • 2022-12-23
  • 2021-08-03
  • 2022-12-23
相关资源
相似解决方案