Cod sursa(job #2303709)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 16 decembrie 2018 19:33:46
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 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' ] = true ;
        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 += dp [ i ][ j ] ; 
    }
	    
    if ( n == 1 )	{ g << 26 << "\n" ; return 0 ; }
    s %= MOD ;
    g << s << "\n" ;
    
    return 0 ;
}