Cod sursa(job #323560)

Utilizator silvia_the_bestSilvia Pripoae silvia_the_best Data 12 iunie 2009 16:54:51
Problema Lista lui Andrei Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>

#define FIN "nrcuv.in"
#define FOUT "nrcuv.out"

#define N 26
#define MOD 104659

int n, m, v[N][N], d[N][26];

void solve()
{
    int i, j, k;

    for (i = 0; i <= 25; ++i)
        d[1][i] = 1;

    for (i = 2; i <= n; ++i)
        for (j = 0; j <= 25; ++j)
            for (k = 0; k <= 25; ++k)
                if (!v[j][k])
                    d[i][j] += d[i - 1][k] , d[i][j] %= MOD;
}

int main()
{
    int i, r;
    char x, y;

    freopen(FIN, "r", stdin);
    freopen(FOUT, "w", stdout);

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

    for (i = 1; i <= m; ++i)
    {
        scanf("%c %c\n", &x, &y);
        v[x - 'a'][y - 'a'] = v[y - 'a'][x - 'a'] = 1;
    }

    solve();

    for (i = 0, r = 0; i <= 25; ++i)
        r += d[n][i];

    printf("%d\n", r);
}