Cod sursa(job #2041337)

Utilizator mihai.alphamihai craciun mihai.alpha Data 17 octombrie 2017 09:27:04
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>

FILE *fin, *fout;

int n, m;
char l[2001], r[2001];
int dp[26][1001];
bool chk[26][26];

#define mod 104659

int main()  {
    fin = fopen("nrcuv.in", "r");
    fout = fopen("nrcuv.out", "w");
    fscanf(fin, "%d%d", &n, &m);
    fgetc(fin);
    for(int i = 1;i <= m;i++)
        fscanf(fin, "%c %c\n", &l[i], &r[i]), l[i] -= 'a', r[i] -= 'a',
        chk[l[i]][r[i]] = chk[r[i]][l[i]] = 1;
    for(int i = 1;i <= 1;i++)  {
        for(int j = 0;j < 26;j++)
            dp[j][i]++;
    }
    for(int i = 2;i <= n;i++)  {
        for(int j = 0;j < 26;j++)
            for(int k = 0;k < 26;k++)  {
                if(chk[j][k] == 0)  {
                    dp[j][i] += dp[k][i - 1];
                    dp[j][i] %= mod;
                }
            }
    }
    int ans = 0;
    for(int i = 0;i < 26;i++)
        ans += dp[i][n], ans %= mod;
    fprintf(fout, "%d", ans % mod);
    fclose(fin);
    fclose(fout);
    return 0;
}