Cod sursa(job #2086171)

Utilizator Andrei17Andrei Pascu Andrei17 Data 11 decembrie 2017 16:36:41
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#define NMAX 1001
#define MOD 104659

using namespace std;

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

int n, m, d[NMAX][27];
bool a[27][27];

int main()
{
    char x, y;
    in >> n >> m;
    for (int i = 0; i < m; i++) {
        in >> x >> y;
        a[x - 'a' + 1][y - 'a' + 1] = true;
        a[y - 'a' + 1][x - 'a' + 1] = true;
    }
    for (int j = 1; j <= 26; j++) {
        d[1][j] = 1;
    }
    for (int i = 2; i <= n; i++) {
        for (int j = 1; j <= 26; j++) {
            for (int k = 1; k <= 26; k++) {
                if (!a[k][j]) {
                    d[i][j] += d[i - 1][k];
                    d[i][j] %= MOD;
                }
            }
        }
    }
    //for (int i = 1; i <= 26; i++) {
    //    for (int j = 1; j <= 26; j++) {
    //        out << a[i][j] << ' ';
    //    }
    //    out << '\n';
    //}
    //out << '\n';
    //for (int i = 1; i <= n; i++) {
    //    for (int j = 1; j <= 26; j++) {
    //        out << d[i][j] << ' ';
    //    }
    //    out << '\n';
    //}
    int s = 0;
    for (int i = 1; i <= 26; i++) {
        s += d[n][i];
        s %= MOD;
    }
    out << s;
    return 0;
}