Cod sursa(job #587103)

Utilizator tibi9876Marin Tiberiu tibi9876 Data 3 mai 2011 21:44:45
Problema Copii Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.88 kb
var a:array[1..10,1..10] of char;
    x:array[1..10] of byte;
    i,j,n:integer;
    sol:longint;

function valid(nr:integer):boolean;
var v:array[1..10] of longint;
    i,j:integer;
begin
valid:=true;
for i:=1 to nr do v[i]:=0;
for i:=1 to n do
begin
v[x[i]]:=v[x[i]] or (1 shl (x[i]-1));
for j:=1 to n do
if a[i,j]='1' then v[x[i]]:=v[x[i]] or (1 shl (x[j]-1));
end;
for i:=1 to nr do
if v[i]<>(1 shl nr)-1 then
begin
valid:=false;
exit;
end;
end;

procedure back(k,nr:integer);
var i:integer;
begin
if (k>n) and (nr>1) and valid(nr) then inc(sol);
if k>n then exit;
for i:=1 to nr do
begin
x[k]:=i;
back(k+1,nr);
end;
x[k]:=nr+1;
back(k+1,nr+1);
end;

begin
assign(input,'copii.in');reset(input);
assign(output,'copii.out');rewrite(output);
readln(n);
for i:=1 to n do
begin
for j:=1 to n do
read(a[i,j]);
readln;
end;
back(1,0);
write(sol);
end.