Cod sursa(job #3250688)

Utilizator Andrei061108Ciortea Andrei Andrei061108 Data 23 octombrie 2024 08:44:50
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>

using namespace std;

#define M 104659

int dp[1001][27];

bool frecv[26][26];

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

int main() {
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < 26; ++i) dp[1][i] = 1;
    for (int i = 0; i < m; ++i) {
        char a, b;
        cin >> a >> b;
        frecv[a - 'a'][b - 'a'] = frecv[b - 'a'][a - 'a'] = true;
    }
    for (int i = 2; i <= n; ++i) {
        for (int j = 0; j < 26; ++j) {
            for (int k = 0; k < 26; ++k) {
                if (!frecv[k][j]) {
                    dp[i][j] += dp[i - 1][k];
                    if (dp[i][j] >= M) dp[i][j] -= M;
                }
            }
        }
    }
    int nr = 0;
    for (int i = 0; i < 26; ++i) {
        nr += dp[n][i];
        if (nr >= M) nr -= M;
    }
    cout << nr;
    return 0;
}