Cod sursa(job #2351855)

Utilizator isa_tudor_andreiAndrei Tudor isa_tudor_andrei Data 22 februarie 2019 19:15:08
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#define NMAX 1005
#define MOD 104659

using namespace std;

int dp[NMAX][30];
int perechi[30][30];

int main() {
    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);
    int n, p;
    char ch1, ch2;
    scanf("%d%d\n",&n,&p);
    for( int i = 1; i <= p; i ++ ) {
      scanf("%c %c\n",&ch1,&ch2);
      perechi[ch2-'a'][ch1-'a'] = 1;
      perechi[ch1-'a'][ch2-'a'] = 1;
    }
    for( int i = 0; i < 27; i ++ )
      dp[1][i] = 1;
    for( int i = 2; i <= n; i ++ )
      for( int k = 0; k < 26; k ++ )
        for( int j = 0; j < 26; j ++ ) {
          if( perechi[k][j] == 0 )
             dp[i][k] += ( dp[i-1][j] ) % MOD;
        }
    long long sum = 0;
    for( int i = 0; i < 26; i ++ )
       sum += dp[n][i], sum %= MOD;
    printf("%lld\n",sum);
    return 0;
}