Cod sursa(job #3343565)

Utilizator Matei_AndronacheMatei Andronache Matei_Andronache Data 27 februarie 2026 19:02:52
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <bits/stdc++.h>

#define mod 104659
using namespace std;
ifstream in ("nrcuv.in");
ofstream out ("nrcuv.out");
long long vec[27][27],dp[27][1001];
vector <int> v[27];
int main()
{
    int n,m;
    for (int i=1;i<=26;i++)
    {
        for (int j=1;j<=26;j++)
        {
            vec[i][j]=1;
        }
    }
    in>>n>>m;
    char a,b;
    for (int i=1;i<=m;i++)
    {
        in>>a>>b;
        vec[a-'a'+1][b-'a'+1]=0;
        vec[b-'a'+1][a-'a'+1]=0;
    }
    for (int i=1;i<=26;i++)
    {
        for (int j=1;j<=26;j++)
        {
            if (vec[i][j]==1)
            {
                v[i].push_back(j);
            }
        }
    }
    for (int i=1;i<=26;i++)
    {
        dp[i][1]=1;
    }
    for (int i=2;i<=n;i++)
    {
        for (int j=1;j<=26;j++)
        {
            for (int k=0;k<v[j].size();k++)
            {
                dp[j][i]=(dp[j][i]+dp[v[j][k]][i-1])%mod;
            }
        }
    }
    long long s=0;
    for (int i=1;i<=26;i++)
    {
        s+=dp[i][n];
        s%=mod;
    }
    out<<s;
    return 0;
}