Cod sursa(job #3236385)

Utilizator DomnulMilandruMilandru Nicon-David DomnulMilandru Data 28 iunie 2024 13:45:19
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb

#include <fstream>
#include <vector>
using namespace std;
ifstream cin("nrcuv.in");
ofstream cout("nrcuv.out");
const int N=104659;
int n,m;
char a,b;
vector<vector<bool>> M;
vector<vector<long long>> dp;
int main()
{
    cin>>n>>m;
    M.resize(26);
    dp.resize(n+1);
    dp[1].resize(26);
    for(int i=0;i<26;i++)
    {
      M[i].resize(26);
      dp[1][i]=1;
    }
    for(int i=0;i<m;i++)
    {
        cin>>a>>b;
        M[a-'a'][b-'a']=1;
        M[b-'a'][a-'a']=1;
    }
    for(int k=2;k<=n;k++)
    {
        dp[k].resize(26);
        for(int i=0;i<26;i++)
         for(int j=0;j<26;j++)
            if(!M[i][j])
             dp[k][i]=(dp[k][i]%N+dp[k-1][j]%N)%N;
    }
    long long s=0;
    for(int i=0;i<26;i++)
       s=(s%N+dp[n][i]%N)%N;
    cout<<s;
    return 0;
}