Cod sursa(job #3148483)

Utilizator BuzdiBuzdugan Rares Andrei Buzdi Data 1 septembrie 2023 19:33:37
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <climits>

using namespace std;

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

const int MOD = 104659;
int n, m;
bool G[26][26];
int dp[1001][26];

int main()
{
    cin >> n >> m;
    for(int i = 1; i <= m; i++)
    {
        char x, y;
        cin >> x >> y;

        int a = x - 'a';
        int b = y - 'a';

        G[a][b] = G[b][a] = 1;
    }

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

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

    int ans = 0;
    for(int j = 0; j < 26; j++)
        ans = (ans + dp[n][j]) % MOD;

    cout << ans;

    return 0;
}