Cod sursa(job #2611044)

Utilizator lucamLuca Mazilescu lucam Data 6 mai 2020 10:57:17
Problema Lista lui Andrei Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
using namespace std;

const int NM = 1e3;
const int MOD = 104659;
int dp[NM + 1][26];
bool cuv[26][26];

int main()
{
    FILE *inf = freopen("concert2.in", "r", stdin);
    FILE *outf = freopen("concert2.out", "w", stdout);

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

    int n, m;
    scanf("%d %d\n", &n, &m);

    for (int i = 0; i < m; ++i) {
        char a, b;
        scanf("%c %c\n", &a, &b);
        cuv[a - 'a'][b - 'a'] = true;
        cuv[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 (!cuv[j][k])
                    dp[i][j] = (dp[i][j] + dp[i - 1][k] % MOD) % MOD;

    int ans = 0;
    for (int i = 0; i < 26; ++i)
        ans = (long long int)(ans + dp[n][i] % MOD) % MOD;
    printf("%d\n", ans);

    fclose(inf);
    fclose(outf);
    return 0;
}