Cod sursa(job #2912738)

Utilizator euyoTukanul euyo Data 10 iulie 2022 13:52:31
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MAXN = 1005;
const int MOD = 104659;
const int ALPHA = 26;

bool f[ALPHA][ALPHA];
int dp[MAXN][ALPHA];

int main() {
  int n, m;
  char x, y;

  fin >> n >> m;
  while ( m-- ) {
	fin >> x >> y;
    f[x - 'a'][y - 'a'] = true; 
    f[y - 'a'][x - 'a'] = true;
  }
  for ( int ch = 0; ch < ALPHA; ++ch ) {
	dp[1][ch] = 1;
  }
  for ( int i = 2; i <= n; ++i ) {
	for ( int p = 0; p < ALPHA; ++p ) {
	  for ( int q = 0; q < ALPHA; ++q ) {
		if ( f[p][q] ) continue;
        dp[i][p] = (dp[i][p] + dp[i-1][q]) % MOD; 
	  }
	}
  }
  int res = 0;
  for ( int p = 0; p < ALPHA; ++p ) {
	res = (res + dp[n][p]) % MOD;
  }
  fout << res;
  fin.close();
  fout.close();
  return 0;
}