Cod sursa(job #1721276)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 25 iunie 2016 01:42:09
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>
using namespace std;

const int NMAX = 1005,
           MOD = 104659;

bool vb[26][26];
int  dp[1005][26]; ///The cache won't mind

int main(void) {
    ifstream fi("nrcuv.in");
    ofstream fo("nrcuv.out");
    int  n, m, ans;
    char a, b;

    ans = 0;

    fi>>n>>m;
    while(m--) {
        fi>>a>>b;
        vb[a-'a'][b-'a'] = 1;
        vb[b-'a'][a-'a'] = 1;
    }

    for(int i=0; i<26; ++i)
        dp[1][i]=1;

    for(int i=1; i<=n; ++i)
    for(int j=0; j<26; ++j)
    for(int k=0; k<26; ++k)
    if(!vb[j][k])
        dp[i+1][k]=(dp[i+1][k]+dp[i][j])%MOD;

    for(int i=0; i<26; ++i)
        ans = (ans + dp[n][i]) % MOD;

    fo<<ans<<'\n';

    fi.close();
    fo.close();
    return 0;
}