Cod sursa(job #1666841)

Utilizator crysstyanIacob Paul Cristian crysstyan Data 28 martie 2016 13:49:07
Problema Lista lui Andrei Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <algorithm>
#define NMAX 1005
#define LMAX 150
#define mod 104659

using namespace std;

ifstream f("nrcuv.in");
ofstream g("nrcuv.out");

int i, n, mat[LMAX][LMAX], dp[2][LMAX], j, k, m, ans = 0;
char a, b;

int main()
{
    f >> n >> m;

    for (i = 1; i <= m; ++ i)
    {
        f >> a >> b;
        mat[a][b] = mat[b][a] = 1;
    }

    for (i = 'a'; i <= 'z'; ++ i)
        dp[1][i] = 1;

    for (i = 2; i <= n; ++ i)
        for (j = 'a'; j <= 'z'; ++ j)
            for (k = 'a'; k <= 'z'; ++ k)
                if (mat[j][k] == 0)
                {
                    dp[i % 2][k] += dp[(i + 1) % 2][j];
                    dp[i % 2][k] %= mod;
                }

    for (i = 'a'; i <= 'z'; ++ i)
    {
        ans += dp[n % 2][i];
        ans %= mod;
    }

    g << ans << '\n';
    return 0;
}