Pagini recente » Cod sursa (job #556593) | Cod sursa (job #2004935) | Cod sursa (job #3142649) | Cod sursa (job #3227816) | Cod sursa (job #2086646)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
#define r 104659
bool f[26][26];
long long dp[26][1001];
int main()
{
int n,m,i,j,k;
char c1,c2;
in>>n>>m;
if(n==1)
{
out<<26;
return 0;
}
for(i=0;i<m;i++)
{
in>>c1>>c2;
c1-=97;
c2-=97;
if(!f[c1][c2])
{
dp[c1][1]++;
if(c1!=c2)
dp[c2][1]++;
f[c1][c2]=1;
f[c2][c1]=1;
}
}
for(i=0;i<26;i++)
dp[i][1]=26-dp[i][1];
for(i=2;i<n;i++)
{
for(j=0;j<26;j++)
{
for(k=0;k<26;k++)
dp[j][i]+=dp[k][i-1]*(1-f[j][k]);
dp[j][i]%=r;
}
}
for(i=1;i<26;i++)
dp[0][n-1]+=dp[i][n-1];
out<<dp[0][n-1]%r;
return 0;
}