Cod sursa(job #2394672)

Utilizator robertrRotaru Stefan Robert robertr Data 1 aprilie 2019 19:50:01
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
using namespace std;
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
int n, k, dp[27][1001], a, b, A[27][27];
char x, y;
int main()
{
    f >> n >> k;
    for (int i = 1; i <= k; ++i) {
        f >> x >> y;
        a = x - 'a' + 1, b = y - 'a' + 1;
        if (!A[a][b]) {
            A[a][0]++;
            if (a - b) A[b][0]++;
            A[a][b] = A[b][a] = 1;
        }
    }
    for (int i = 1; i <= 26; ++i) dp[i][1] = 1, dp[i][2] = 26 - A[i][0];
    for (int j = 3; j <= n; ++j) {
        for (int i = 1; i <= 26; ++i) {
            for (int l = 1; l <= 26; ++l) if (!A[i][l]) dp[i][j] += dp[l][j - 1];
            dp[i][j] = ((dp[i][j] % 104659) + 104659) % 104659;
        }
    }
    int s = 0;
    for (int i = 1; i <= 26; ++i) s += dp[i][n];
    g << s % 104659<< endl;
    return 0;
}