RT,感觉是弱化版食物链,但是就是两个点过不去
var
max,q,e,u,d,x,y,fx,fy,i,j,k,l,m,n:longint;
f1,f2:longint;
r,f:array[0..100000] of longint;
num:int64;
c,ch,cc:char;
function sf(x:longint):longint;
var
fx:longint;
begin
if f[x]=x then exit(x)
else begin
fx:=sf(f[x]);
r[x]:=(r[x]+r[f[x]]) mod 2;
exit(fx);
end;
end;
procedure union(x,y,fx,fy,d:longint);
begin
f[fy]:=fx;
r[fy]:=(2-r[y]+d+r[x]) mod 2;
end;
begin
readln(n,m,q);
for i:=1 to n do
begin
f[i]:=i;
r[i]:=0;
end;
for i:=1 to m do
begin
readln(cc,x,cc,c,cc,cc,y);
if c='p' then d:=0 else d:=1;
fx:=sf(x); fy:=sf(y);
if fx<>fy then union(x,y,fx,fy,d)
else if ((r[y]-r[x]+2) mod 2)<>d then
begin
writeln('There must be something wrong...');
halt;
end;
end;
for i:=1 to n do
begin
for j:=i+1 to n do
if (i<>j)and(sf(i)=sf(j))and(r[i]=r[j]) then inc(num);
end;
writeln(num);
for i:=1 to q do
begin
readln(cc,x,cc,cc,y);
if sf(x)<>sf(y) then
writeln('No idea.')
else begin
if r[x]=r[y] then writeln('Parallel.')
else writeln('Vertical.' );
end;
end;
end.
var
max,q,e,u,d,x,y,fx,fy,i,j,k,l,m,n:longint;
f1,f2:longint;
r,f:array[0..100000] of longint;
num:int64;
c,ch,cc:char;
function sf(x:longint):longint;
var
fx:longint;
begin
if f[x]=x then exit(x)
else begin
fx:=sf(f[x]);
r[x]:=(r[x]+r[f[x]]) mod 2;
exit(fx);
end;
end;
procedure union(x,y,fx,fy,d:longint);
begin
f[fy]:=fx;
r[fy]:=(2-r[y]+d+r[x]) mod 2;
end;
begin
readln(n,m,q);
for i:=1 to n do
begin
f[i]:=i;
r[i]:=0;
end;
for i:=1 to m do
begin
readln(cc,x,cc,c,cc,cc,y);
if c='p' then d:=0 else d:=1;
fx:=sf(x); fy:=sf(y);
if fx<>fy then union(x,y,fx,fy,d)
else if ((r[y]-r[x]+2) mod 2)<>d then
begin
writeln('There must be something wrong...');
halt;
end;
end;
for i:=1 to n do
begin
for j:=i+1 to n do
if (i<>j)and(sf(i)=sf(j))and(r[i]=r[j]) then inc(num);
end;
writeln(num);
for i:=1 to q do
begin
readln(cc,x,cc,cc,y);
if sf(x)<>sf(y) then
writeln('No idea.')
else begin
if r[x]=r[y] then writeln('Parallel.')
else writeln('Vertical.' );
end;
end;
end.