Cod sursa(job #1839652)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 3 ianuarie 2017 12:02:48
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
using namespace std;

#define NMAX 1001
#define MOD 104659
int D[ NMAX ][ 27 ];
int A[ 27 ][ 27 ];


int main () {

    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);

    int n, m, i, j, k;
    char x, y;

    scanf( "%d%d%*c",&n,&m );
    while ( m-- ) {
        scanf( "%c%*c%c%*c",&x,&y );
        x -= 'a' - 1;
        y -= 'a' - 1;
        A[ x ][ y ] = A[ y ][ x ] = 1;
    }

    for ( i = 1; i <= 26; ++i ) D[ 1 ][ i ] = 1;

    for ( int lg = 2; lg <= n; ++lg ) {
        for ( i = 1; i <= 26; ++i ) {
            for ( j = 1; j <= 26; ++j ) {
                if ( !A[ i ][ j ] ) {
                    D[ lg ][ j ] += D[ lg - 1 ][ i ];
                    D[ lg ][ j ] %= MOD;
                }
            }
        }
    }

    int ans = 0;

    for ( i = 1; i <= 26; ++i )
        ans = ( ans + D[ n ][ i ] ) % MOD;

    printf( "%d\n",ans );

    return 0;

}