📄 1129.pas
字号:
{$A+,B-,D+,E-,F-,G+,I+,L+,N+,O-,P-,Q-,R-,S+,T-,V+,X+,Y+}
{$M 16384,0,655360}
program Door_Painting;
const
InputFile = '1129.in';
Max = 100;
var
g, Res : array [1..Max, 1..Max] of Byte;
Link : array [1..Max, 0..Max] of Byte;
Du : array [1..Max] of Integer;
n : Integer;
i, j, k, t, o : Integer;
begin
Assign(Input, InputFile);
Reset(Input);
Readln(n);
Fillchar(g, Sizeof(g), 0);
for i:=1 to n do begin
Read(j); Link[i, 0]:=j;
for k:=1 to j do begin
Read(t);
g[i, t]:=1; Link[i, k]:=t;
end;
Readln;
end;
Close(Input);
Fillchar(Res, Sizeof(Res), 0);
Fillchar(Du, Sizeof(Du), 0);
for i:=1 to n do
for j:=1 to n do
if g[i, j]=1 then begin
if Du[i]>=0 then k:=1
else k:=-1;
Inc(Du[i], k); Dec(Du[j], k);
if k>0 then Res[i, j]:=1
else Res[j, i]:=1;
g[i, j]:=0; g[j, i]:=0;
t:=j;
repeat
o:=1;
while (o<=n) and (g[t, o]=0) do Inc(o);
if o<=n then begin
Inc(Du[t], k); Dec(Du[o], k);
if k>0 then Res[t, o]:=1
else Res[o, t]:=1;
g[t, o]:=0; g[o, t]:=0;
t:=o;
end;
until o>n;
end;
for i:=1 to n do begin
k:=0;
for j:=1 to Link[i, 0] do
if Res[i, Link[i, j]]=1 then begin
if k=0 then k:=1
else Write(' ');
Write('G');
end
else
if Res[Link[i, j], i]=1 then begin
if k=0 then k:=1
else Write(' ');
Write('Y');
end;
Writeln;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -