Cod sursa(job #179118)

Utilizator pandaemonAndrei Popescu pandaemon Data 15 aprilie 2008 17:43:03
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<stdio.h>
#include<string.h>

#define NMAX 1001
#define ALPHA 26
#define REST 104659

int n,m,i,j1,j2,alpha[ALPHA][ALPHA];

long nrcuv[NMAX][ALPHA],sol;

main()
{
  freopen("nrcuv.in","r",stdin);
  freopen("nrcuv.out","w",stdout);

  scanf("%d %d", &n, &m);

  char x1,x2,newline;

  for(i=1; i<=m; i++)
  {

  scanf("%c %c %c", &newline, &x1, &x2);

  x1-='a'; x2-='a';

  alpha[x1][x2] = alpha[x2][x1] = 1;

  }


  for(i=0; i<ALPHA; i++)  nrcuv[1][i] = 1;


  for(i=2; i<=n; i++)

  for(j1=0; j1 < ALPHA; j1++)
  for(j2=0; j2 < ALPHA; j2++)

    if( alpha[j1][j2] == 0 )

    nrcuv[i][j1] = (nrcuv[i][j1] + nrcuv[i-1][j2]) % REST;


  for( i = 0;  i < ALPHA; i++)  sol = (sol + nrcuv[n][i]) % REST;


  printf("%ld\n",sol);  return 0;}