Cod sursa(job #3142480)

Utilizator xDemonstyMatei Haba Ionut xDemonsty Data 21 iulie 2023 18:44:47
Problema Lista lui Andrei Scor 35
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
using namespace std;
ifstream cin("nrcuv.in");
ofstream cout("nrcuv.out");
// dp [ i ] = dp [ i - 2  ] + words ;

long long mod = 104559;
long long n, k ;

long long dp [ 1001 ] [ 27 ];
long long pereche [ 30  ] [ 30 ];
long long frv [ 27 ];
int main()
{
    cin >> n >>  k;



    for ( int i = 1; i <= k ; i ++ )
    {
        char a,  b;
        cin >> a >> b ;
        pereche [ a - 'a']  [ b -'a' ] ++ ;
        pereche [ b  - 'a'] [ a -'a' ] ++ ;

    }



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

    for ( int i = 2; i <= n ; i ++ )
    {
        for ( int j = 0 ; j < 26 ; j ++ )
            for ( int k = 0 ; k < 26 ; k ++ )
                if ( pereche [ j  ][ k ] == 0 )
                    dp [ i ][ j ] = (dp [ i ][ j ] + dp [ i - 1 ] [ k ]) % mod ;
   }

    int total =0 ;

    for ( int i = 0 ; i < 26 ; i ++ )
    {
        total += dp [ n ][ i ];
        total %= mod;
    }
    cout << total ;


    return 0;
}