Cod sursa(job #2192375)

Utilizator vlad.ulmeanu30Ulmeanu Vlad vlad.ulmeanu30 Data 5 aprilie 2018 20:32:36
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#define maxn 1000
#define nl 26
#define mod 104659

using namespace std;

int dp[nl][maxn+5];
bool fb[nl][nl]; /// forbidden

int main ()
{
  ifstream fin ( "nrcuv.in" );
  ofstream fout ( "nrcuv.out" );

  int n, m;

  fin >> n >> m;

  int i;
  char a, b;

  fin.get ();
  for ( i = 0; i < m; i++ )
  {
    fin.get ( a );
    fin.get ();
    fin.get ( b );
    fin.get ();
    a -= 'a';
    b -= 'a';
    fb[a][b] = fb[b][a] = 1;
  }

  for ( i = 0; i < nl; i++ )
    dp[i][0] = 1;

  int j, k;

  for ( i = 1; i < n; i++ )
    for ( j = 0; j < nl; j++ )
      for ( k = 0; k < nl; k++ )
        if ( fb[j][k] == 0 )
          dp[k][i] = ( dp[k][i] + dp[j][i-1] ) % mod;

  int sum = 0;

  for ( i = 0; i < nl; i++ )
    sum = ( sum + dp[i][n-1] ) % mod;

  fout << sum;

  fin.close ();
  fout.close ();

  return 0;
}