Cod sursa(job #2356557)

Utilizator Senth30Denis-Florin Cringanu Senth30 Data 26 februarie 2019 19:35:16
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;
const int MOD = 104659;
const int NR = 30;
const int NMAX = 1025;

int N, M;
bool cuv[NR][NR];
int d[NMAX][NR];

int main() {

    long long sum = 0;
    char c1, c2;

    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);

    scanf("%d %d\n", &N, &M);
    for(int i=1; i<=M; i++){
        scanf("%c %c\n", &c1, &c2);
        cuv[c1 - 'a'][c2 - 'a'] = cuv[c2 - 'a'][c1 - 'a']  = true;
    }

    for(int i = 0; i < 26; i ++ )
      d[0][i] = 1;

    for(int k = 1; k < N; k++)
        for(int i = 0; i < 26; i++)
            for(int j = 0; j < 26; j++){
                if(cuv[i][j] == 0)
                    d[k][i] = (d[k][i] + d[k-1][j]) % MOD;
            }

    for(int i = 0; i < 26;i++)
        sum = (sum + d[N-1][i]) % MOD;

    printf("%lld\n",sum);

    return 0;
}