Cod sursa(job #1241396)

Utilizator diana97Diana Ghinea diana97 Data 13 octombrie 2014 14:58:15
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MOD = 104659, NMAX = 1000 + 1, LMAX = 26 + 1;

int n, m;
int v[LMAX][LMAX], sol[NMAX][LMAX];

void citeste() {
    char a, b;

    f >> n >> m;
    for (int i = 1; i <= m; i++) {
        f >> a >> b;
        v[a - 'a' + 1][b - 'a' + 1] = 1;
        v[b - 'a' + 1][a - 'a' + 1] = 1;
    }
}

void rezolva() {
    for (int i = 1; i < LMAX; i++) sol[1][i] = 1;
    for (int i = 2; i <= n; i++) {
        for (int a = 1; a < LMAX; a++)
            for (int b = 1; b < LMAX; b++)
                if (v[a][b] == 0){
                    sol[i][a] += sol[i - 1][b];
                    sol[i][a] %= MOD;
                }
    }

    int rez = 0;
    for (int i = 1; i < LMAX; i++) rez = (rez + sol[n][i]) % MOD;

    g << rez << '\n';
}

int main() {
    citeste();
    rezolva();
    return 0;
}