Cod sursa(job #1730764)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 17 iulie 2016 16:25:43
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<cstdio>
#define MAXN 1010
#define SIGMA 30
#define MOD 104659
using namespace std;
int ok[SIGMA][SIGMA];
int dp[MAXN][SIGMA];
int main(){
    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);
    int n,m,i,j,k,answer=0;
    char a,b;
    scanf("%d%d\n",&n,&m);
    for(i=1;i<=m;i++){
        scanf("%c %c\n",&a,&b);
        ok[a-'a'+1][b-'a'+1]=ok[b-'a'+1][a-'a'+1]=1;
    }
    for(i=1;i<=26;i++)
        dp[1][i]=1;
    for(i=2;i<=n;i++)
        for(j=1;j<=26;j++)
            for(k=1;k<=26;k++)
                if(ok[j][k]==0){
                    dp[i][k]+=dp[i-1][j];
                    if(dp[i][k]>=MOD)
                        dp[i][k]-=MOD;
                }
    for(i=1;i<=26;i++)
        answer+=dp[n][i];
    printf("%d",answer%MOD);
    return 0;
}