Cod sursa(job #1799213)

Utilizator MiricaMateiMirica Matei MiricaMatei Data 5 noiembrie 2016 22:12:44
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
using namespace std;
int dp[1005][30];
bool viz[30][30];
int main(){
    freopen("nrcuv.in", "r", stdin);
    freopen("nrcuv.out", "w", stdout);
    int n, m, i, j, x;
    char c1, c2;
    scanf("%d%d", &n, &m);
    for (i = 1; i <= m; i ++){
        scanf(" %c %c", &c1, &c2);
        viz[c1 - 'a' + 1][c2 - 'a' + 1] = 1;
        viz[c2 - 'a' + 1][c1 - 'a' + 1] = 1;
    }
    for (i = 1; i <= 26; i ++)
        dp[1][i] = 1;
    for (i = 2; i <= n; i ++)
        for (j = 1; j <= 26; j ++)
            for (x = 1; x <= 26; x ++)
                if (!viz[j][x])
                    dp[i][x] = (dp[i][x] + dp[i - 1][j]) % 104659;
    x = 0;
    for (i = 1; i <= 26; i ++)
        x = (x + dp[n][i]) % 104659;
    printf("%d\n", x);
    return 0;
}