Cod sursa(job #2674526)

Utilizator MoiseVictor123Moise victor MoiseVictor123 Data 19 noiembrie 2020 16:27:30
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>

using namespace std;

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

const int N = 1001;
const int X = 104659;

int n;
int m;
int sol;
int dp[N][26];
bool cuv[26][26];
int cmax = 'z' - 'a' + 1;

void solve() {
    for(int j = 0; j < cmax; j++)
        dp[1][j] = 1;
    for(int i = 2; i <= n; i++)
        for(int j = 0; j < cmax; j++)
            for(int k = 0; k < cmax; k++)
                if(!cuv[j][k])
                    dp[i][j] = (dp[i][j] + dp[i - 1][k]) % X;
}

int main() {
    in >> n >> m;
    for(int i = 0; i < m; i++) {
        char a;
        char b;
        in >> a >> b;
        cuv[a - 'a'][b - 'a'] = 1;
        cuv[b - 'a'][a - 'a'] = 1;
    }
    solve();
    for(int i = 0; i < cmax; i++) {
        sol += + dp[n][i];
        sol = sol % X;
    }
    out << sol;
    return 0;
}