Cod sursa(job #2295278)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 3 decembrie 2018 14:43:40
Problema Lista lui Andrei Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <vector>
#define MOD 104659 ;

using namespace std ;

const int NR = 1005 ;

ifstream f ("nrcuv.in") ;
ofstream g ("nrcuv.out") ;

bool map1 [ 26 ][ 26 ] = { false } ;
int dp [ 26 ][ NR ] ;

int n , m , s ;

int main ()
{
    f >> n >> m ;
    for ( int i = 1 ; i <= m ; ++ i )
    {
        char a , b ; f >> a >> b ;
        map1 [ a - 'a' ][ b - 'a' ] = map1 [ b - 'a' ][ a - 'a' ] = true ;
    }
    
    for ( int k = 0 ; k <= 25 ; ++ k )   dp [ k ][ 1 ] = 1 ;
    
    for ( int j = 2 ; j <= n ; ++ j  )
    for ( int i = 0 ; i <= 25 ; ++ i )
    {
        for ( int k = 0 ; k <= 25 ; ++ k )
        if ( !map1 [ k ][ i ] ) dp [ i ][ j ] += dp [ k ][ j - 1 ] , dp [ i ][ j ] %= MOD ;
        if ( j == n )   {  s %= MOD ;  s += dp [ i ][ j ] ; }
    }
    
    g << s << "\n" ;
    
    return 0 ;
}