Cod sursa(job #2712447)

Utilizator Alex_tz307Lorintz Alexandru Alex_tz307 Data 25 februarie 2021 19:24:34
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;

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

const int mod = 104659;
const int NMAX = 1024;
bool forbidden[26][26];
int N, M, dp[NMAX][26], ans;
char c1, c2;

void add_self(int &a, int b) {
    a += b;
    if(a >= mod)
        a -= mod;
}

int main(){
    fin >> N >> M;
    for(int i = 0; i < M; ++i) {
        fin >> c1 >> c2;
        forbidden[c1 - 'a'][c2 - 'a'] = forbidden[c2 - 'a'][c1 - 'a'] = true;
    }
    for(int i = 0; i < 26; ++i)
        dp[1][i] = 1;
    for(int i = 2; i <= N; ++i)
        for(int c = 0; c < 26; ++c)
            for(int prv = 0; prv < 26; ++prv)
                if(!forbidden[c][prv])
                    add_self(dp[i][c], dp[i - 1][prv]);
    for(int i = 0; i < 26; ++i)
        add_self(ans, dp[N][i]);
    fout << ans << '\n';
}