Cod sursa(job #486060)

Utilizator SpiderManSimoiu Robert SpiderMan Data 20 septembrie 2010 13:45:17
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
# include <bitset>
using namespace std ;

const char FIN[] = "nrcuv.in", FOU[] = "nrcuv.out" ;
const int MAX = 1005, C_MAX = 27, MOD = 104659 ;

bitset < C_MAX > A[C_MAX] ;
int V[MAX][C_MAX] ;
int N, M ;

void read_data ( void ) {
    freopen ( FIN, "r", stdin ) ;

    scanf ( "%d %d", &N, &M ) ;
    for ( int i = 0; i < M; ++i ) {
        char a, b ;
        scanf ( " %c %c", &a, &b ) ;
        A[a - 'a'][b - 'a'] = A[b - 'a'][a - 'a'] = 1 ;
    }
}

void solve ( void ) {
    int sol = 0 ;
    for ( int i = 0; i < C_MAX - 1; ++i ) {
        V[0][i] = 1 ;
    }
    for ( int i = 1; i < N; ++i ) {
        for ( int j = 0; j < C_MAX - 1; ++j ) {
            for ( int k = 0; k < C_MAX - 1; ++k ) {
                if ( A[k][j] == 0 ) {
                    V[i][j] += V[i - 1][k], V[i][j] %= MOD ;
                }
            }
        }
    }
    for ( int i = 0; i < C_MAX - 1; ++i ) {
        sol += V[N - 1][i], sol %= MOD ;
    }
    fprintf ( fopen ( FOU, "w" ) , "%d" , sol ) ;
}

int main ( void ) {
    read_data (), solve () ;
}