1 solutions
-
0
Pascal :
var i,x,y,k,n,ans:longint; t:integer; dad:array[0..50001] of word; r:array[0..50001] of byte; function find(i:word):word; var temp:longint; begin if dad[i]=i then exit(i); temp:=dad[i]; dad[i]:=find(dad[i]); r[i]:=(r[temp]+r[i]) mod 3; exit(dad[i]); end; procedure union(x,y,h:longint); var a,b:longint; begin a:=find(x); b:=find(y); dad[a]:=b; r[a]:=(r[y]+h-r[x]+3) mod 3; end; begin readln(n,k); for i:=1 to n do dad[i]:=i; for i:=1 to k do begin readln(t,x,y); if (x>n) or (y>n) then begin inc(ans); continue; end; if t=1 then if find(x)=find(y) then begin if r[x]<>r[y] then begin inc(ans); continue; end; end else union(x,y,0); if t=2 then begin if x=y then begin inc(ans); continue; end; if find(x)=find(y) then begin if r[x]<>(r[y]+1) mod 3 then begin inc(ans); continue; end; end else union(x,y,1); end; end; writeln(ans); end.
- 1
Information
- ID
- 18034
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By