Cod sursa(job #828407)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 3 decembrie 2012 18:58:50
Problema Lista lui Andrei Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<cstdio>
#define MOD(x) x>104659?x-=104659:x
bool S[27][27];
int M[1005][27],i,j,n,m,k,sol;
char a,b;
int main()
{
    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",&a,&b);
        a=a-'a'+1;
        b=b-'a'+1;
        S[a][b]=S[b][a]=1;
    }
    for(i=1;i<=26;i++) M[1][i]=1;
    for(i=2;i<=n;i++)
    {
        for(j=1;j<=26;j++)
        {
            for(k=1;k<=26;k++)
            {
                if(S[j][k]+S[k][j]==0) M[i][j]+=M[i-1][k];
            }
            MOD(M[i][j]);
            if(i==n) sol+=M[i][j];
            MOD(sol);
        }
    }
    printf("%d\n",sol);
    return 0;
}