Pagini recente » Cod sursa (job #954853) | Cod sursa (job #2112316) | Cod sursa (job #2134491) | Cod sursa (job #2473749) | Cod sursa (job #82576)
Cod sursa(job #82576)
#include <cstdio>
#include <fstream>
//FILE *in = fopen("nrcuv.in","r"), *out = fopen("nrcuv.out","w");
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
int rez[1002][27] = {{0}};
int p[27][27] = {{0}};
int n, m;
void read()
{
char a, b;
// fscanf(in, "%d %d", &n, &m);
in >> n >> m;
for ( int i = 0; i < m; ++i )
{
// fscanf(in, "%s %s", &a, &b);
// printf("%c %c\n", a, b);
in >> a >> b;
p[a-'a'+1][b-'a'+1] = 1;
p[b-'a'+1][a-'a'+1] = 1;
}
// for ( int i = 1; i <= 26; ++i )
// {
// for ( int j = 1; j <= 26; ++j )
// printf("%d ", p[i][j]);
// printf("\n");
// }
}
int main()
{
read();
for ( int j = 1; j <= 26; ++j )
rez[1][j] = 1;
for ( int i = 2; i <= n; ++i )
for ( char j = 'a'; j <= 'z'; ++j )
for ( char k = 'a'; k <= 'z'; ++k )
{
if ( p[j-'a'+1][k-'a'+1] == 0 || p[k-'a'+1][j-'a'+1] == 0 )
rez[i][j-'a'+1] = (rez[i][j-'a'+1] + rez[i-1][k-'a'+1]) % 104659;
}
// for ( int i = 1; i <= n; ++i )
// {
// for ( int j = 1; j <= 26; ++j )
// printf("%d ", rez[i][j]);
// printf("\n");
// }
int s = 0;
for ( int i = 1; i <= 26; ++i )
s = (s + rez[n][i]) % 104659;
// fprintf(out, "%d\n", s);
out << s << endl;
return 0;
}