Cod sursa(job #3254241)

Utilizator rapidu36Victor Manz rapidu36 Data 6 noiembrie 2024 18:01:46
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>
#include <vector>
#include <bitset>

using namespace std;

const int MOD = 104659;
const int NL = 26;

int main()
{
    ifstream in("nrcuv.in");
    ofstream out("nrcuv.out");
    int n, m;
    in >> n >> m;
    vector <bitset <NL>> inc(NL);
    for (int i = 0; i < m; i++)
    {
        char x, y;
        in >> x >> y;
        int nr_x = x - 'a';
        int nr_y = y - 'a';
        inc[nr_x][nr_y] = inc[nr_y][nr_x] = 1;
    }
    vector < vector <int>> nrc(n + 1);
    vector <int> aux(NL, 1);///vector STL alocat dinamic, cu toate elementele 1
    nrc[1] = aux;
    for (int i = 2; i <= n; i++)
    {
        for (int j = 0; j < NL; j++)
        {
            aux[j] = 0;
            for (int k = 0; k < NL; k++)
            {
                ///incercam sa adaugam a j-a litera la un cuvant de lung. i-1, terminat cu a k-a litera
                if (!inc[k][j])
                {
                    aux[j] = (aux[j] + nrc[i-1][k]) % MOD;
                }
            }
        }
        nrc[i] = aux;
    }
    int rez = 0;
    for (int j = 0; j < NL; j++)
    {
        rez = (rez + nrc[n][j]) % MOD;
    }
    out << rez;
    in.close();
    out.close();
    return 0;
}