Pagini recente » Cod sursa (job #1720267) | Cod sursa (job #192509) | Cod sursa (job #2247632) | Cod sursa (job #2647461) | Cod sursa (job #2567966)
#include <fstream>
std::ifstream f("nrcuv.in");
std::ofstream g("nrcuv.out");
const int MOD = 104659;
const int NMAX = 1005;
bool ok[30][30];
int n,m,d[NMAX][30],sol;
char a,b;
// d[i][j] - cate cuvinte se pot forma care se termina in litera j si are exact i litere
int main(){
f >> n >> m;
for(int i = 1;i <= m;++i){
f >> a >> b;
ok[a - 'a'][b - 'a'] = ok[b - 'a'][a - 'a'] = 1;
}
for(char c = 'a';c <= 'z';++c)
d[1][c - 'a'] = 1;
for(int i = 2;i <= n;++i)
for(char j = 'a';j <= 'z';++j)
for(char ch = 'a';ch <= 'z';++ch)
if(!ok[j - 'a'][ch - 'a'])
d[i][j - 'a'] = (d[i][j - 'a'] + d[i - 1][ch - 'a']) % MOD;
for(char c = 'a';c <= 'z';++c)
sol = (sol + d[n][c - 'a']) % MOD;
g << sol;
return 0;
}