Я лично согласен с Никитой, очередь на мой взгляд очень трудно назвать графом, я бы сказал нельзя, а поиск в ширину, к слову, - это всего лишь МЕТОД ОБХОДА ГРАФА.
Те, кто не любит писать много кода, знайте, перестановки можно написать рекурсивно. Вот сам код:
var a: array[0..1001] of longint;
index,n: longint;
procedure generate(l,r:longint);
var i, v: integer;
begin
if (l = r)
then
begin
for i := 1 to n do
write(a[i], ' ');
writeln;
end
else
begin
for i := l to r do
begin
v := a[l];
a[l] := a[i];
a[i] := v; {обмен a[i],a[j]}
generate(l + 1, r); {вызов новой генерации}
v := a[l];
a[l] := a[i];
a[i] := v; {обмен a[i],a[j]}
end;
end;
end;
begin
readln(n);
for index := 1 to n do
A[index] := index;
generate(1, n);
end.