Pagini recente » Cod sursa (job #2920303) | Cod sursa (job #1212196) | Cod sursa (job #566233) | Cod sursa (job #686228) | Cod sursa (job #3264329)
#include <iostream>
#include <fstream>
#include <unordered_set>
#define int long long
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
const int MAX=1000,ALPHABET=26,MOD=104659;
int dp[MAX+5][ALPHABET+5],i,n,m,sol,j,k;
char a,b;
int nr(char a)
{
return a-'a'+1;
}
unordered_set<int> s[ALPHABET+5];
signed main()
{
fin>>n>>m;
while (m)
{
fin>>a>>b;
int val=nr(a),val2=nr(b);
s[val].insert(val2);
s[val2].insert(val);
m--;
}
for (i=1; i<=ALPHABET; i++)
dp[1][i]=1;
for (i=1; i<n; i++)
{
for (j=1; j<=ALPHABET; j++)
{
for (k=1; k<=ALPHABET; k++)
{
if (!s[j].count(k))
dp[i+1][k]=(dp[i+1][k]+dp[i][j])%MOD;
}
}
}
for (i=1; i<=ALPHABET; i++)
sol=(sol+dp[n][i])%MOD;
fout<<sol;
return 0;
}