Cod sursa(job #1452871)

Utilizator bogdan.balanBogdan Balan bogdan.balan Data 22 iunie 2015 09:27:48
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <vector>
#define MOD 104659

using namespace std;

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

long long n , m , dp[1005][50] , mat[50][50];


int main()
{
    char l1 , l2 ;

    f >> n >> m ;
    if(n == 1){
        g << 26;
        return 0;
    }

    for(int i = 1 ; i <= m ; ++i){
        f >> l1 >> l2;
        mat[l1 - 'a' + 1][l2 - 'a' + 1] = mat[l2 - 'a' + 1][l1 - 'a' + 1] = 1;
    }

    for(int i = 1 ; i <= 26 ; ++i){
        dp[1][i] = 1 ;
    }
    for(int i = 2 ; i <= n ; ++i){
        for(int j = 1 ; j <= 26 ; ++j){
            for(int k = 1 ; k <= 26; ++k){
                if(mat[j][k] == 0){
                    dp[i][j] += dp[i - 1][k];
                    dp[i][j] %= MOD;
                }
            }
        }
    }
    int sol = 0 ;
    for(int i = 1 ; i <= 26 ; ++i){
        sol += dp[n][i];
        sol %= MOD;
    }
    g << sol % MOD;
    return 0;
}