Cod sursa(job #3141770)

Utilizator velciu_ilincavelciu ilinca velciu_ilinca Data 16 iulie 2023 14:25:12
Problema Lista lui Andrei Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

using namespace std;

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

const int mmax = 2001;
int ok[mmax][mmax];
int dp[mmax][mmax];
///dp[i][j] = nr de cuv cu i litere unde j e ultima litera a cuv
const int mod = 104659;

int main()
{
    int n,m;
    in>>n>>m;

    for(int i = 1; i <= m; i++)
    {
        char x,y;
        in>>x>>y;
        ok[x - 'a'][y - 'a'] = 1;
        ok[y - 'a'][x - 'a'] = 1;
    }

    for(int i = 1; i <= 26; i++)
        dp[1][i] = 1;

    for(int i = 2; i <= n; i++)///nr lit
        for(int j = 1; j <= 26; j++)///ultima
            for(int k = 1; k <= 26; k++)///penultima
                if(ok[j][k] == 0)
                    dp[i][j] = (dp[i][j] + dp[i - 1][k])%mod;

    int total = 0;
    for(int i = 1; i <= 26; i++)
        total = (total + dp[n][i])%mod;

    out<<total;
    return 0;
}