Cod sursa(job #1000412)

Utilizator florin.elfusFlorin Elfus florin.elfus Data 22 septembrie 2013 20:04:15
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
#include<string.h>
#define MOD 104659

bool f[30][30];

int last[50],next[50];

int main()
{
    int n,k,i2,i,j;
    char ch1,ch2;

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

    scanf("%d%d\n",&n,&k);
    while(k--)
    {
        scanf("%c %c\n",&ch1,&ch2);
        f[ch1-'a'+1][ch2-'a'+1]=1;
        f[ch2-'a'+1][ch1-'a'+1]=1;
    }
    for(i=1;i<=26;i++)
        last[i]=1;
    for(i=2;i<=n;i++)
    {
        for(j=1;j<=26;j++)
        {
            next[j]=0;
            for(i2=1;i2<=26;i2++)
                if(!f[i2][j])
                    next[j]=(next[j]+last[i2])%MOD;
        }
        memcpy(last,next,sizeof(last));
    }
    int Sum=0;
    for(i=1;i<=26;i++)
        Sum=(Sum+last[i])%MOD;
    printf("%d",Sum);
    return 0;
}