Cod sursa(job #1535089)

Utilizator edim98Eduard Constantinescu edim98 Data 24 noiembrie 2015 12:24:55
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#define MOD 104659
#include <cstdio>

FILE *fin = fopen("nrcuv.in", "r");
FILE *fout = fopen("nrcuv.out", "w");

using namespace std;

int restrictie[26][26], mat[26][1003];

char c1, c2;
int n, m, s;

int main()
{
    fscanf(fin, "%d%d", &n, &m);
    for(int i = 1; i <= m; i++)
    {
        fscanf(fin, "\n%c %c", &c1, &c2);
        restrictie[c1-'a'][c2-'a'] = restrictie[c2-'a'][c1-'a'] = 1;
    }
    for(int i = 0; i < 26; i++)
        mat[i][1] = 1;

    for(int i = 2; i <= n; i++)
    {
        for(int j = 0; j <= 25; j++)
        {
            for(int k = 0; k <= 25; k++)
            {
                if(restrictie[k][j] == 0)
                    {
                        mat[j][i] += mat[k][i-1];
                        mat[j][i] %= MOD;
                    }
            }
        }
    }
    for(int i = 0; i < 26; i++)
    {
        s += mat[i][n];
        s %= MOD;
    }

    fprintf(fout, "%d\n", s);
    return 0;
}