Cod sursa(job #1518081)

Utilizator radu_uniculeu sunt radu radu_unicul Data 5 noiembrie 2015 13:27:28
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<cstdio>
using namespace std;
#define MOD 104659
int k,n;
int m[28][28];
long long dp[28][1005];
char tmp;
int nr(char x)
{
    return x-'a';
}
int main()
{
    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);
    scanf("%d %d ",&n,&k);
    for(int i=1; i<=k; i++)
    {
        char a,b;
        scanf("%c%c%c%c",&a,&tmp, &b, &tmp);
        m[nr(a)][nr(b)]=1;
        m[nr(b)][nr(a)]=1;
    }
    for(int i=0; i<26; i++) dp[i][0]=1;
    for(int i=1; i<n; i++)
    {
        for(int root=0; root<26; ++root)
            for(int other=0; other<26; ++other) if(!m[root][other])
                {
                    dp[other][i]+=dp[root][i-1];
                    dp[other][i]%=MOD;
                }
    }
    long long int s=0;
    for(int i=0; i<26; i++)
    {
        s+=dp[i][n-1];
    }
printf("%lld",s%MOD);
}