Cod sursa(job #1707852)

Utilizator silkMarin Dragos silk Data 25 mai 2016 23:10:21
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>
#define DIM 28
#define NMax 1005

const int MOD = 104659;

int vecin[DIM][DIM];
int v[DIM][NMax];

int main(){
    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);

    int n,m,i,j,s,ans;
    char l1,l2,pass;

    scanf("%d %d",&n,&m);
    scanf("%c",&pass);
    for( i = 1; i <= m; ++i )
    {
        scanf("%c %c",&l1,&l2);
        vecin[l1-'a'+1][l2-'a'+1] = 1;
        vecin[l2-'a'+1][l1-'a'+1] = 1;

        scanf("%c",&pass);
    }

    for( i = 1; i < DIM - 1; ++i ) v[i][1] = 1;


    for( i = 2; i <= n; ++i )
    {
        // toate cazurile initial
        for( j = 1; j < DIM - 1; ++j )
            for( s = 1; s < DIM - 1; ++s )
            if( vecin[j][s] == 0 )
            v[j][i] = ( v[j][i] + v[s][i-1] ) % MOD;

    }



    for( ans = 0, i = 1; i < DIM - 1 ; ++i  ) ans = ( ans + v[i][n] ) % MOD;
    printf("%d\n",ans);




return 0;
}