Pagini recente » Borderou de evaluare (job #3356886) | Cod sursa (job #3333115) | Cod sursa (job #3129587) | Cod sursa (job #640384) | Cod sursa (job #3347950)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
const int MOD = 104659;
const int NL = 26;
const int NMAX = 1000;
int n, m, cnt;
bool l[NL][NL];
int dp[NMAX+2][NL];
int main()
{
in>>n>>m;
for (int i=1; i<=m; i++)
{
char l1, l2;
in>>l1>>l2;
l[l1 - 'a'][l2 - 'a'] = 1;
l[l2 - 'a'][l1 - 'a'] = 1;
}
for (int i=0; i<NL; i++)
{
dp[1][i] = 1;
}
for (int i=2; i<=n; i++)
{
for (int j=0; j< NL; j++)
{
for (int k=0; k<NL; k++)
{
if (l[j][k]==0)
{
dp[i][j] = (dp[i][j] + dp[i-1][k]) % MOD;
}
}
}
}
for (int i=0; i< NL; i++)
{
cnt = (cnt + dp[n][i]) % MOD;
}
out<<cnt;
return 0;
}