Cod sursa(job #286255)

Utilizator crawlerPuni Andrei Paul crawler Data 23 martie 2009 17:01:45
Problema Lista lui Andrei Scor 10
Compilator cpp Status done
Runda qwerty-1 Marime 1.12 kb
#include <stdio.h>

#define M 104659

int a[33][33];
int nr[1024][33],n,m;

int main()
{
     freopen("nrcuv.in","r",stdin);
     freopen("nrcuv.out","w",stdout);
     
     scanf("%d%d\n", &n,&m);

    // printf("%d %d\n", n,m);
     

     for (int i=1;i<=26;++i)
     for (int j=1;j<=26;++j)
          a[i][j] = 1;
     
     char x,y;
     
     for (int i=1;i<=m;++i)
     {
          x = fgetc(stdin);
          while (x <'a' || x > 'z')
                  x = fgetc(stdin);
          y = fgetc(stdin);
          while (y <'a' || y > 'z')
                  y = fgetc(stdin);
          //printf("%c %c\n", x,y);
          x -= 'a';
          y -= 'a';
          a[x][y] = 0;
          a[y][x] = 0;
     }
     
     for (int i=1;i<=26;++i)
          nr[1][i] = 1;
          
     for (int i=2;i<=n;++i)
     for (int j=1;j<=26;++j)
     for (int k=1;k<=26;++k)
     if (a[j][k] == 1)
          nr[i][j] = (nr[i][j] + nr[i-1][k])%M;
          
     int ret = 0;
     
     for (int i=1;i<=26;++i)
          ret = (ret+nr[n][i])%M;

     printf("%d\n", ret);
     
     return 0;     
}