Cod sursa(job #2961718)

Utilizator rastervcrastervc rastervc Data 6 ianuarie 2023 21:38:57
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>

using namespace std;

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

static constexpr int ord(char ch) {
    return ch - 'a';
}

constexpr size_t MOD = 104659;
int N, M, i, j, k, dp[1005][26], ans;
char letter1, letter2;
bool bad[26][26];

int main() {
    fin >> N >> M;
    for (i = 1; i <= M; ++i) {
        fin >> letter1 >> letter2;
        bad[ord(letter1)][ord(letter2)] = true;
        bad[ord(letter2)][ord(letter1)] = true;
    }

    for (i = 0; i < 26; ++i)
        dp[1][i] = 1;

    for (i = 2; i <= N; ++i)
        for (j = 0; j < 26; ++j)
            for (k = 0; k < 26; ++k)
                if (!bad[j][k])
                    dp[i][j] = (dp[i][j] + dp[i - 1][k]) % MOD;


    for (i = 0; i < 26; ++i)
        ans = (ans + dp[N][i]) % MOD;

    fout << ans;

    fin.close();
    fout.close();
    return 0;
}