Cod sursa(job #1232552)

Utilizator pulseOvidiu Giorgi pulse Data 23 septembrie 2014 09:07:43
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#define MOD 104659

using namespace std;

ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");

const int MAXN = 1005;
int N, M;
long long dp[MAXN][30];
char Used[30][30];

int main()
{
    fin >> N >> M;
    for (int i = 1; i <= M; ++i)
    {
        char a, b;
        fin >> a >> b;
        Used[a - 'a'][b - 'a'] = 1;
        Used[b - 'a'][a - 'a'] = 1;
    }
    for (int i = 0; i < 26; ++i)
        dp[1][i] = 1;
    for (int i = 2; i <= N; ++i)
    {
        for (int j = 0; j < 26; ++j)
        {
            for (int k = 0; k < 26; ++k)
                if (!Used[j][k])
                    dp[i][k] = (dp[i][k] + dp[i - 1][j]) % MOD;
        }
    }
    for (int i = 0; i < 25; ++i)
        dp[N][25] += dp[N][i];
    fout << dp[N][25] % MOD << '\n';
    fin.close();
    fout.close();
    return 0;
}