Cod sursa(job #2271906)

Utilizator Alex_BubBuburuzan Alexandru Alex_Bub Data 29 octombrie 2018 14:48:45
Problema Lista lui Andrei Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");

const int NMAX = 26, MOD = 104659;

int DP[2][NMAX + 5], N, M, S = 26;

bool A[NMAX + 5][NMAX + 5];

int main()
{
    char x, y;

    fin >> N >> M;

    memset(A, 1, sizeof(A));

    while(M--) {
        fin >> x >> y;

        x -= 'a', y -= 'a';
        A[x][y] = A[y][x] = false;
    }

    for(int i = 0; i <= NMAX; i++)
        DP[0][i] = 1;

    for(int ct = 2, l = 1; ct <= N; ct++, l = 1 - l) {
        S = 0;

        for(int i = 0; i < NMAX; i++) {
            for(int j = 0; j < NMAX; j++)
                if(A[i][j])
                    DP[l][i] = (DP[l][i] + DP[1 - l][j]) % MOD;

            S = (S + DP[l][i]) % MOD;
        }
    }

    fout << S << '\n';

    fin.close();
    fout.close();

    return 0;
}