Cod sursa(job #3288180)

Utilizator mihail_11Ionescu Mihail mihail_11 Data 20 martie 2025 19:43:06
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
const int mod=104659;
bool mat[28][28];///mat[x][y]==1 nu se poate
long long int dp[27][1005];
int main()
{
    long long int n,m,i,j,k,ans=0;
    char c1,c2;
    fin>>n>>m;
    for(i=1;i<=m;++i)
    {
        fin>>c1>>c2;
        mat[c1-'a'+1][c2-'a'+1]=1;
        mat[c2-'a'+1][c1-'a'+1]=1;
    }
    for(i=1;i<=26;++i)
    {
        dp[i][1]=1;
    }
    for(i=2;i<=n;++i)
    {
        for(j=1;j<=26;++j)
        {
            for(k=1;k<=26;++k)
            {
                if(!mat[k][j] && !mat[j][k])
                    dp[j][i]=(dp[k][i-1]+dp[j][i])%mod;
            }
        }
    }
    for(i=1;i<=26;++i)
    {
        ans+=dp[i][n];
        ans=ans%mod;
    }
    fout<<ans;
    return 0;
}