Pagini recente » Cod sursa (job #294489) | Cod sursa (job #617414) | Monitorul de evaluare | Cod sursa (job #2175764) | Cod sursa (job #1005564)
#include <iostream>
#include <fstream>
#define nmax 1005
#define mod 104659
using namespace std;
bool prieten[300][300];
char a, b;
int n, m, dp[nmax][300];
int main() {
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
for(int i='a'; i<='z'; i++)
for(int j='a'; j<='z'; j++)
prieten[i][j] = true;
f>>n>>m;
for(int i=1; i<=m; i++) {
f>>a>>b;
prieten[a][b] = false;
prieten[b][a] = false;
}
for(int i='a'; i<='z'; i++) dp[1][i] = 1;
for(int i=2; i<=n; i++)
for(int litera_curenta ='a'; litera_curenta<='z'; litera_curenta++) {
dp[i][litera_curenta] = 0;
for(int litera_anterioara = 'a'; litera_anterioara<='z'; litera_anterioara++)
if(prieten[litera_curenta][litera_anterioara])
dp[i][litera_curenta] = (dp[i][litera_curenta] + dp[i-1][litera_anterioara]) % mod;
}
int sol = 0;
for(int i='a'; i<='z'; i++) sol += dp[n][i];
g<<sol%mod<<"\n";
return 0;
}