Cod sursa(job #2089367)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 16 decembrie 2017 13:42:13
Problema Lista lui Andrei Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXCHAR 26
#define NMAX 1000
#define MOD 104659

char leg[MAXCHAR][MAXCHAR];
int d[1 + NMAX][1 + MAXCHAR];

int main() {
    int n, m;
    char x, y;
    FILE *fin = fopen("nrcuv.in", "r");
    fscanf(fin, "%d%d\n", &n, &m);
    for (int i = 0; i < m; ++i) {
        x = fgetc(fin);
        fgetc(fin);
        y = fgetc(fin);
        fgetc(fin);
        leg[x - 'a'][y - 'a'] = leg[y - 'a'][x - 'a'] = 1;
    }
    for (int i = 0; i < MAXCHAR; i++)
        d[1][i] = 1;
    for (int i = 2; i <= n; i++)
        for (int j = 0; j < MAXCHAR; j++)
            for (int k = 0; k < MAXCHAR; k++)
                if (leg[j][k] == 0)
                    d[i][j] = (d[i][j] + d[i - 1][k])%MOD;
    int ans = 0;
    for (int i = 0; i < MAXCHAR; ++i)
        ans = (ans + d[n][i]) % MOD;
    FILE *fout = fopen("nrcuv.out", "w");
    fprintf(fout, "%d", ans);
    return 0;
}