Cod sursa(job #1513240)

Utilizator mariakKapros Maria mariak Data 29 octombrie 2015 10:04:37
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <algorithm>
#include <cstring>
#define Mod 104659
#define Dim 1005
using namespace std;
int n, m, i, j, p, q, k, dp[Dim][30], sol;
char ch1,ch2;
bool w[30][30];
int main()
{
    freopen("nrcuv.in", "r", stdin);
    freopen("nrcuv.out", "w", stdout);
    scanf("%d %d\n", &n, &m);
    for (i = 1; i <= m; i ++)
    {
        scanf("%c %c\n", &ch1, &ch2);
        w[ch1 - 'a' + 1][ch2 - 'a' + 1] = 1;
        w[ch2 - 'a' + 1][ch1 - 'a' + 1] = 1;
    }
    if (n == 1)
    {
        printf("26\n");
        exit(0);
    }
    for (i = 1; i <= 26; i ++)
        dp[1][i] = 1;

    for (i = 2; i <= n; i ++)
        for (j = 1; j <= 26; j ++)
        {
            for (k = 1; k <= 26; k ++)
                if (!w[j][k])
                    dp[i][j] = (dp[i][j] + dp[i - 1][k]) % Mod;
            if (i == n)
                sol = (sol + dp[i][j]) % Mod;
        }
    printf("%d\n", sol);
    return 0;
}