Cod sursa(job #1163263)

Utilizator xtreme77Patrick Sava xtreme77 Data 1 aprilie 2014 11:47:23
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>
#define MIN 30
#define MOD 104659
#define MAX 1110
using namespace std;

short int nupot [MIN][MIN];
int mat[MIN][MAX];
int main()
{
    char ch1,ch2;
    int n,m,i,j,k,s=0;
    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);
    scanf("%d%d\n",&n,&m);
    for(i=1;i<=m;++i){
        scanf("%c %c\n",&ch1,&ch2);
        nupot[ch1-'a'][ch2-'a']=nupot[ch2-'a'][ch1-'a']=1;
    }
    for(i=0;i<=25;++i)mat[i][1]=1;
    for(i=2;i<=n;++i)
        for(j=0;j<=25;++j)
            for(k=0;k<=25;++k)
                if(nupot[j][k]==0){
                     mat[j][i]+=mat[k][i-1];
                     mat[j][i]%=MOD;
                }
    for(i=0;i<=25;++i){
        s+=mat[i][n];
        s%=MOD;
    }
    printf("%d\n",s%MOD);
    return 0;
}