Cod sursa(job #2094523)

Utilizator GhiciCineRazvan Dumitriu GhiciCine Data 26 decembrie 2017 01:11:05
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <cstdio>
#define MAXLIT 'z'
#define MAXN 1000
#define MOD 104659

using namespace std;

char ok[MAXLIT + 5][MAXLIT + 5];
int ap[MAXN + 5][MAXLIT + 5];

int main( ) {
  FILE *f1, *f2;
  int n, m, i, l1, l2, cuvinte;

  f1 = fopen( "nrcuv.in", "r" );
  f2 = fopen( "nrcuv.out", "w" );

  fscanf( f1, "%d%d ", &n, &m );
  for( i = 1; i <= m; i++ ) {
    l1 = fgetc( f1 );
    fgetc( f1 );
    l2 = fgetc( f1 );
    fgetc( f1 );
    printf( "%c %c\n", l1, l2 );
    if( !ok[l1][l2] )
      ok[l1][l2] = 1;
    if( !ok[l2][l1] )
      ok[l2][l1] = 1;
  }
  for( i = 'a'; i <= 'z'; i++ )
    ap[1][i] = 1;
  for( i = 2; i <= n; i++ )
    for( l1 = 'a'; l1 <= 'z'; l1++ )
      for( l2 = 'a'; l2 <= 'z'; l2++ )
        if( !ok[l1][l2] )
          ap[i][l1] = ( ap[i][l1] + ap[i - 1][l2] ) % MOD;
  cuvinte = 0;
  for( i = 'a'; i <= 'z'; i++ ) {
    cuvinte += ap[n][i];
    cuvinte %= MOD;
  }
  fprintf( f2, "%d", cuvinte );
  return 0;
}