Pagini recente » Cod sursa (job #218639) | Cod sursa (job #1844401) | Istoria paginii runda/fminostress10simulare/clasament | Cod sursa (job #2723946) | Cod sursa (job #1534460)
// O(n * sigma^2)
#include <fstream>
#include <array>
#include <numeric>
using namespace std;
constexpr int mod = 104659;
constexpr int sigma = 26;
int main(){
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
int n, m;
f >> n >> m;
array<array<bool, sigma>, sigma> interzise = {};
for(int i = 0; i < m; ++i){
char a, b;
f >> a >> b;
a -= 'a', b -= 'a';
interzise[a][b] = interzise[b][a] = true; }
array<array<int, sigma>, 2> d;
for(int i = 0; i < sigma; ++i){
d[0][i] = 1; }
for(int i = 1; i < n; ++i){
for(int j = 0; j < sigma; ++j){
d[i%2][j] = 0;
for(int k = 0; k < sigma; ++k){
if(!interzise[j][k]){
d[i%2][j] += d[(i+1)%2][k]; } }
d[i%2][j] %= mod; } }
g << accumulate(begin(d[(n+1)%2]), end(d[(n+1)%2]), 0, [](const int a, const int b){
const int tmp = a+b;
return (tmp >= mod) ? tmp-mod : tmp; });
return 0; }