Cod sursa(job #1206389)

Utilizator MaarcellKurt Godel Maarcell Data 9 iulie 2014 19:51:09
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <string.h>
#define prim 104659
using namespace std;
int N,M,d[1100][26],sol; bool allowed[26][26];
int ind(char lit){
    return lit-'a';
}
int main(){
    ifstream in("nrcuv.in");
    ofstream out("nrcuv.out");
    in >> N >> M;
    memset(allowed,1,sizeof(allowed));
    int i,j,k; char c1,c2;
    for (i=0; i<M; i++){
        in >> c1 >> c2;
        allowed[ind(c1)][ind(c2)]=allowed[ind(c2)][ind(c1)]=0;
    }
    memset(d,0,sizeof(d));
    for (i=0; i<26; i++) d[1][i]=1;
    for (i=2; i<=N; i++){
        for (j=0; j<26; j++)
            for (k=0; k<26; k++)
                if (allowed[j][k]){ d[i][j]+=d[i-1][k]; d[i][j]%=prim; }
    }
    sol=0;
    for (i=0; i<26; i++) { sol+=d[N][i]%prim; sol%=prim; }
    out << sol;
}