Cod sursa(job #942203)

Utilizator Athena99Anghel Anca Athena99 Data 21 aprilie 2013 13:57:16
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cassert>
#include <cstdio>

const int mod=104659;
int x[30][30],d[1005][30];
int n=0,m=0;

void read()
{
    int i=0;
    char a=' ',b=' ';

    assert(scanf("%d%d\n",&n,&m));

    for (i=0; i<m; ++i)
    {
        assert(scanf("%c %c\n",&a,&b));
        x[(int)a-'a'][(int)b-'a']=1;
        x[(int)b-'a'][(int)a-'a']=1;
    }
}

void solve()
{
    int i=0,j=0,k=0,sol=0;

    for (i=0; i<26; ++i)
        d[1][i]=1;

    for (i=2; i<=n; ++i)
        for (j=0; j<26; ++j)
            for (k=0; k<26; ++k)
                if (x[j][k]<1)
                    d[i][j]=(d[i][j]+d[i-1][k])%mod;

    for (i=0; i<26; ++i)
        sol=(sol+d[n][i])%mod;

    assert(printf("%d\n",sol));
}

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

    read();
    solve();

    return 0;
}