Cod sursa(job #2892186)

Utilizator SeracovanuEdwardSeracovanu Edward SeracovanuEdward Data 21 aprilie 2022 10:44:50
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;

int const mod = 104659;
int const inf = 26;

int n , m;

int valid[inf+1][inf+1];

int dp[1001][inf+1];

int main()
{
    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    for(int i = 0 ;i < inf; ++i)
        for(int j = 0;j < inf; ++j)
            valid[i][j] = 1;
    cin >> n >> m;
    while (m--){
        char a , b;
        cin >> a >> b;
        valid[a-'a'][b-'a'] = valid[b-'a'][a-'a'] = 0;
    }
    for(int i = 0;i < inf; ++i)
        dp[0][i] = 1;
    for(int i = 1;i < n; ++i){
        for(int j = 0;j < inf; ++j)
            for(int q = 0;q < inf; ++q){
                dp[i][j] = (dp[i][j] + dp[i-1][q] * valid[j][q]) % mod;
            }
    }
    int ans = 0;
    for(int i = 0;i < inf; ++i)
        ans = (ans + dp[n-1][i]) % mod;
    cout << ans;
}