Pagini recente » Monitorul de evaluare | Cod sursa (job #947072) | Profil RusuEliza | Cod sursa (job #1287974) | Cod sursa (job #2367716)
#include <cstdio>
#define MOD 104659
using namespace std;
int inter[27][27];
int n, m;
int d[1005][27];
void mat(){
char x, y;
for(int i=1;i<=m;i++)
{
scanf("%c %c\n",&x,&y);
inter[x-'a'][y-'a']++;///sa nu poata fi una dupa alta
inter[y-'a'][x-'a']++;
}
}
int progrDin(){
/**
d[i][x] = numarul de cuvinte de i litere
care se termina cu litera x
d[i][y]=suma(d[i][x])
*/
for(int i=0; i<=26;i++)
d[1][i]=1;
for(int i=2; i<=n; i++)
{
for(int j=0; j<26; j++)
{
for(int k=0; k<26;k++)
if(inter[j][k]==0 && inter[k][j]==0)///daca pot fi una dupa alta
d[i][j]=(d[i][j]+d[i-1][k])%MOD;
}
}
int nr=0;
for(int i=0; i<26; i++)
{
nr=(d[n][i]+nr)%MOD;
}
return (nr%MOD);
}
int main()
{
freopen("nrcuv.in","r",stdin);
freopen("nrcuv.out","w",stdout);
scanf("%d %d\n",&n, &m);
mat();
printf("%d",progrDin());
return 0;
}