Cod sursa(job #1706015)

Utilizator dsergiu05Sergiu Druga dsergiu05 Data 21 mai 2016 12:31:04
Problema Lista lui Andrei Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>

using namespace std;

ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");

const int nmax=1000, sigma=26, mod=104659;
int c[sigma][sigma], d[2][sigma];

int main () {
    int n, m;
    fin>>n>>m;

    for (int i=1; i<=m; i++) {
        char x, y;
        fin>>x>>y;
        c[x-'a'][y-'a']=1;
        c[y-'a'][x-'a']=1;
    }
    for (int i=0; i<sigma; i++) {
        d[1][i]=1;
    }

    for (int i=2,ind=0,indp=1; i<=n; i++,ind=1-ind,indp=1-indp) {
        for (int j=0; j<sigma; j++) {
            for (int k=0; k<sigma; k++) {
                if (c[j][k]==0) {
                    d[ind][j]+=d[indp][k];
                    if (d[ind][j]>=mod) {
                        d[ind][j]-=mod;
                    }
                }
            }
        }
    }
    int sol=0;
    for (int j=0; j<sigma; j++) {
        sol+=d[n%2][j];
        if (sol>=mod) {
            sol-=mod;
        }
    }
    fout<<sol<<"\n";
    return 0;
}