Cod sursa(job #148692)

Utilizator dascalu2Dascalu Andi FLorin dascalu2 Data 4 martie 2008 18:37:26
Problema Lista lui Andrei Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.42 kb
type nmare=array[0..100]of byte;
var n,m,i,j,k,x,y,cuv:longint;
    re:array[1..26,1..26]of byte;
    l1,l2,c:char;
    a:array[1..1000,1..26]of nmare;
    nr,nrc:nmare;
procedure transformare(var nr1:longint;var nr2:nmare);
var t:byte;
begin
     t:=0;
     while(nr1<>0)do
     begin
          t:=t+1;
          nr2[t]:=nr1 mod 10;
          nr1:=nr1 div 10;
     end;
     nr2[0]:=t;
end;
procedure adunare(var a,b:nmare);
var l,z,tmp:byte;
begin
     if(a[0]>b[0])then
     l:=a[0]
     else
     l:=b[0];
     tmp:=0;
     for z:=1 to l do
     begin
          tmp:=tmp+a[z]+b[z];
          a[z]:=tmp mod 10;
          tmp:=tmp div 10;
     end;
     if(tmp<>0)then
     begin
          z:=z+1;
          a[z]:=tmp;
     end;
     a[0]:=z;
end;

begin
assign(input,'nrcuv.in');
reset(input);
readln(n,m);
for i:=1 to m do
begin
     readln(l1,c,l2);
     x:=ord(l1-'a')+1;
     y:=ord(l2-'a')+1;
     re[x,y]:=1;
     re[y,x]:=1;
end;
close(input);
nr[0]:=1;
nr[1]:=1;
for k:=1 to 26 do
a[1,k]:=nr;
for i:=2 to n do
begin
     for j:=1 to 26 do
     begin
          for k:=1 to 26 do
              if(re[j,k]=0)then
              cuv:=cuv+1;
              transformare(cuv,nr);
              adunare(a[i,j],nr);
     end;
end;
assign(output,'nrcuv.out');
rewrite(output);
for i:=1 to 26 do
adunare(nrc,a[n,i]);
for i:=nrc[0] downto 1 do
write(nrc[i]);
close(output);
end.