1 solutions

  • 0
    @ 2025-11-5 16:53:01

    Pascal :

    var
        fa,nu,so:array[1..30000]of longint;
        n,i,p,q,x,y:longint;
        ch:char;
    function find(t:longint):longint;
    var
       k:longint;
    begin
         if fa[t]=t then exit(t);
         k:=find(fa[t]);
         inc(nu[t],nu[fa[t]]-1);
         fa[t]:=k;
         exit(k);
    end;
    procedure main;
    begin
         readln(n);
         for i:=1 to 30000 do
             begin
                  fa[i]:=i;
                  nu[i]:=1;
                  so[i]:=i;
             end;
         for i:=1 to n do
             begin
                  readln(ch,x,y);
                  p:=find(x);q:=find(y);
                  if ch='C' then
                     begin
                          if p<>q then writeln(-1)
                          else writeln(abs(nu[x]-nu[y])-1);
                     end else
                     begin
                          fa[p]:=so[q];
                          inc(nu[p]);
                          so[q]:=so[p];
                     end;
             end;
    end;
    begin
         main;
    end.
    
    • 1

    Information

    ID
    18033
    Time
    2000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By