Cod sursa(job #1559491)

Utilizator mirupetPetcan Miruna mirupet Data 30 decembrie 2015 22:16:59
Problema Lista lui Andrei Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<cstdio>
#include<bitset>
#define MOD 104659
#define DIM 1001
using namespace std;

int M, N, sol, i, j, k;
int w[DIM][26];
char X, Y;
bitset <26> v[26];
char S[5];

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

        scanf("%d%d\n", &N, &M);

        for (i = 1; i <= M; i++)
        {
            gets(S); X = S[0], Y = S[2];
            v[X - 'a'][Y - 'a'] = v[Y - 'a'][X - 'a'] = 1;
        }

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

        for (i = 1; i < N; i++)
            for (j = 0; j < 26; j++)
                for (k = 0; k < 26; k++)
                    if (!v[k][j])
                        w[i][j] = (w[i][j] + w[i - 1][k]);


        for (i = 0; i < 26; i++)
            sol = (sol + w[N - 1][i]) % MOD;

        printf("%d\n", sol);
    }