Mai intai trebuie sa te autentifici.
Cod sursa(job #136676)
Utilizator | Data | 15 februarie 2008 19:27:31 | |
---|---|---|---|
Problema | Dusman | Scor | 0 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 1.98 kb |
program dusman;
var f,g:text;
i,n,m,p:longint;
x,y:array[1..3000]of longint;
function valid (a,b:longint):boolean;
var ok:boolean;
i:longint;
begin
ok:=true;
for i:=1 to m do
begin
if (a=x[i])and(b=y[i])then
begin
ok:=false;
break;
end;
if (b=x[i])and(a=y[i])then
begin
ok:=false;
break;
end;
end;
valid:=ok;
end;
procedure back;
var k,i,aux,ok,st,dr,c,j,o:longint;
v:array[1..1000]of longint;
begin
k:=n-1;
ok:=0;
for i:=1 to n do v[i]:=i;
o:=1;
for i:=1 to n-1 do
if (valid(v[i],v[i+1])=false)then
begin
o:=0;
break;
end;
if (o=1)then c:=1 else c:=0;
if (p=c)then
begin
for i:=1 to n do write(g,v[i],' ');
end else
while true do
begin
for i:=n downto k+1 do
if (v[i]>v[k])then
begin
aux:=v[i];
v[i]:=v[k];
v[k]:=aux;
st:=k+1;
dr:=n;
while (st<dr)do
begin
aux:=v[st];
v[st]:=v[dr];
v[dr]:=aux;
inc(st);
dec(dr);
end;
ok:=1;
break;
end;
if (ok=1)then begin
o:=1;
for i:=2 to n do
if (valid(v[i-1],v[i])=false)then
begin
o:=0;
break;
end;
if (o=1)then c:=c+1;
if (c=p)then
begin
for j:=1 to n do write(g,v[j],' ');
break;
end;
k:=n-1;
ok:=0;
end else
k:=k-1;
end;
end;
begin
assign(f,'dusman.in');
assign(g,'dusman.out');
reset(f);
rewrite(g);
read(f,n,p,m);
for i:=1 to n do read(f,x[i],y[i]);
back;
close(f);
close(g);
end.