Cod sursa(job #2851427)

Utilizator AndreiBadAndrei Badulescu AndreiBad Data 18 februarie 2022 17:15:52
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
//
//  main.cpp
//  Lista lui Andrei (infoarena)
//
//  Created by Andrei Bădulescu on 18.02.22.
//

#include <iostream>
#include <fstream>

using namespace std;

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

int posibilitati[27][27];
int v[1001][27];

int main() {
    int n;
    in >> n;
    int k;
    in >> k;
    
    for (int i = 1; i <= k; i++) {
        char a, b;
        in >> a >> b;
        posibilitati[a - 'a' + 1][b - 'a' + 1] = 1;
        posibilitati[b - 'a' + 1][a - 'a' + 1] = 1;
    }
    
    for (int i = 1; i <= 26; i++) {
        v[1][i] = 1;
    }
    
    for (int i = 2; i <= n; i++) {
        for (int j = 1; j <= 26; j++) {
            int answer = 0;
            for (int k = 1; k <= 26; k++) {
                if (posibilitati[k][j] == 0) {
                    answer += v[i - 1][k];
                    answer %= 104659;
                }
            }
            v[i][j] = answer;
        }
    }
    
    int rasp = 0;
    
    for (int i = 1; i <= 26; i++) {
        rasp += v[n][i];
        if (rasp >= 104659) {
            rasp -= 104659;
        }
    }
    
    out << rasp;
    return 0;
}