Cod sursa(job #2356336)

Utilizator MateiTrandafirMatei Trandafir MateiTrandafir Data 26 februarie 2019 17:01:20
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

constexpr int MAX_N = 1001;
constexpr int MOD = 104659;

int d[MAX_N][26], v[26], n, m;

int main() {
    std::ifstream in("nrcuv.in");
    std::ofstream out("nrcuv.out");
    int i, j, k, r = 0;
    char x, y;
    in >> n >> m;
    for (i = 0; i < m; ++i) {
        in >> x >> y;
        x -= 'a';
        y -= 'a';
        v[x] |= 1 << y;
        v[y] |= 1 << x;
    }
    for (j = 0; j < 26; ++j) d[1][j] = 1;
    for (i = 2; i <= n; ++i) {
        for (j = 0; j < 26; ++j) {
            for (k = 0; k < 26; ++k)
                if ((v[j] & (1 << k)) == 0)
                    d[i][j] = (d[i][j] + d[i - 1][k]);
            d[i][j] %= MOD;
        }
    }
    for (j = 0; j < 26; ++j) r += d[n][j];
    out << r % MOD;
    return 0;
}