Cod sursa(job #1238836)

Utilizator pop_bogdanBogdan Pop pop_bogdan Data 7 octombrie 2014 20:22:32
Problema Lista lui Andrei Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
//
//  main.cpp
//  Lista lui Andrei
//

#include <fstream>
using namespace std;

ifstream is("nrcuv.in");
ofstream os("nrcuv.out");

#define MOD 104659

int N, M;
bool Ap[26][26];
int D[1001][27];
char x, y;

int main()
{
    is >> N >> M;
    
    for ( int i = 1; i <= M; ++i )
    {
        is >> x >> y;
        Ap[x-'a'][y-'a'] = 1;
        Ap[y-'a'][x-'a'] = 1;
    }
    
    for ( int i = 0; i <= 25; ++i )
        D[1][i] = 1;
    
    for ( int i = 2; i <= N; ++i )
        for ( int j = 0; j <= 25; ++j )
            for ( int k = 0; k <= 25; ++k )
                if ( Ap[k][j] == 0 )
                {
                    D[i][k] += D[i-1][j];
                    if ( D[i][k] >= MOD )
                        D[i][k] %= MOD;
                }
    
    int R(0);
    for ( int i = 0; i <= 25; ++i )
        R += D[N][i];
    
    os << R;
    
    is.close();
    os.close();
}