Cod sursa(job #1528431)

Utilizator Master011Dragos Martac Master011 Data 19 noiembrie 2015 18:14:56
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<cstdio>
using namespace std;

const int nrLit = 26, nMax = 1000, MOD = 104659;
bool p[nrLit][nrLit];
int din[nMax][nrLit];
int n, m;


int main (){
    FILE *in = fopen("nrcuv.in","r");

    fscanf(in,"%d%d\n", &n, &m);

    char a, b;
    for(int i = 0 ; i < m ; ++i){
        a = fgetc(in);
        fgetc(in);
        b = fgetc(in);
        fgetc(in);
        a -= 'a', b -= 'a';
        p[(int)b][(int)a] = true;
        p[(int)a][(int)b] = true;
    }

    fclose(in);

    for(int i = 0 ; i < nrLit ; ++i) din[0][i] = 1;

    for(int i = 1 ; i < n ; ++i){
        for(int j = 0 ; j < nrLit ; ++j){
            for(int k = 0 ; k < nrLit ; ++k){
                if(!p[j][k]){
                    din[i][j] = (din[i][j] + din[i - 1][k]) % MOD;
                }
            }
        }
    }

    int s = 0;
    for(int i = 0 ; i < nrLit ; ++i) s = (s + din[n - 1][i]) % MOD;

    FILE *out = fopen("nrcuv.out","w");
    fprintf(out,"%d\n", s);
    fclose(out);

    return 0;
}