Pagini recente » Cod sursa (job #603958) | Cod sursa (job #492762) | Cod sursa (job #538740) | Cod sursa (job #1640458) | Cod sursa (job #1541924)
#include <stdio.h>
#include <algorithm>
#include <vector>
#define mod 104659
using namespace std;
int n,m,i,j,k,l,dp[26][1005];
vector <int> line[26];
char s[1005],a,b;
int main() {
freopen("nrcuv.in","r",stdin);
freopen("nrcuv.out","w",stdout);
scanf("%d %d",&n,&m); gets(s);
for (i=1;i<=m;i++) {
scanf("%c %c",&a,&b); gets(s);
line[a-97].push_back(b-97); line[b-97].push_back(a-97);
}
for (i=0;i<26;i++) sort(line[i].begin(),line[i].end());
for (i=0;i<26;i++) dp[i][1]=1;
for (i=2;i<=n;i++) {
for (j=0;j<26;j++) {
int l=0;
for (k=0;k<26;k++) {
if (l<line[j].size() && k!=line[j][l]) dp[j][i]=(dp[j][i]+dp[k][i-1])%mod;
if (l>=line[j].size()) dp[j][i]=(dp[j][i]+dp[k][i-1])%mod;
while (l<line[j].size() && k==line[j][l]) l++;
}
}
}
int sol=0;
for (i=0;i<26;i++) sol=(sol+dp[i][n])%mod;
printf("%d",sol);
return 0;
}