Cod sursa(job #1794859)

Utilizator andy1207Cioltan Andrei andy1207 Data 1 noiembrie 2016 19:48:15
Problema Lista lui Andrei Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<cstdio>
#define Modulo 104659
int a[27][27];
int d[27][1001];
int main()
{
 int n,m;
 freopen("nrcuv.in","r",stdin);
 freopen("nrcuv.out","w",stdout);
 scanf("%d%d\n",&n,&m);
 char c1,c2;
 for(int i=1;i<=m;i++)
    {
     scanf("%c %c ",&c1,&c2);
     a[c1-'a'+1][c2-'a'+1]=a[c2-'a'+1][c1-'a'+1]=1;
    }
 //a[i][j]=numarul de cuvinte care se termina cu litera j si au lungime i
 for(int i=1;i<=26;i++)
     d[1][i]=1;
 for(int i=2;i<=n;i++)
    {
     for(int j=1;j<=26;j++)
        {
         for(int f=1;f<=26;f++)
            {
             if(a[j][f]==0)
                {
                 d[i][f]=(d[i][f]+d[i-1][j])%Modulo;
                }
            }
        }
    }
 int rez=0;
 for(int i=1;i<=26;i++)
     rez=(rez+d[n][i])%Modulo;
 printf("%d\n",rez);
return 0;
}