Pagini recente » Cod sursa (job #269607) | Cod sursa (job #1691327) | Cod sursa (job #2551754) | Cod sursa (job #1498067) | Cod sursa (job #1904993)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
#define lim 1010
#define mod 104659
int n,m,dp[lim][30];
char x,y;
bool imp[30][30];
/// dp[i][j] - nr max de cuv de lungime i care se pot forma si au u.l. j
int main()
{
fin>>n>>m;
for(int i=1; i<=m; i++)
{
fin>>x>>y;
imp[x-'a'][y-'a']=1;
imp[y-'a'][x-'a']=1;
}
for(int i=0; i<=25; i++)
dp[1][i]=1;
for(int i=1; i<=n; i++)
for(int j=0; j<26; j++)
for(int k=0; k<26; k++)
if(!imp[j][k])
{
dp[i][j]+=dp[i-1][k];
dp[i][j]%=mod;
}
long long rez=0;
for(int i=0; i<26; i++)
{
rez+=dp[n][i];
rez%=mod;
}
fout<<rez;
fin.close();
fout.close();
return 0;
}