Cod sursa(job #2339735)

Utilizator Mirela_MagdalenaCatrina Mirela Mirela_Magdalena Data 9 februarie 2019 11:19:35
Problema Lista lui Andrei Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#define MOD 104659
#include <cstdio>

using namespace std;

int fr[27], mat[27][27];
int d[27][1005];
int N, M;
char l1, l2;

int main()
{
    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", &l1, &l2);
        mat[l1-'a'][l2-'a'] = 1;
        mat[l2-'a'][l1-'a'] = 1;
    }
    for(int i=0; i<26; i++)
    {
        fr[i] = 26;
        for(int j=0; j<26; j++)
            fr[i] -= mat[i][j];
    }
    /// d[i][x] = cate cuvinte de lungime i care se termina in x
    for(int i=1; i<=N; i++)
    {
        for(int j=0; j<26; j++)
            d[i][j] = (1LL*(d[i-1][j]+fr[j]))%MOD;
    }
    long long sum = 0;
    for(int j=0; j<26; j++)
        sum = 1LL*(sum+d[N][j])%MOD;
    printf("%lld", sum/2);
    return 0;
}