Cod sursa(job #286234)

Utilizator Mishu91Andrei Misarca Mishu91 Data 23 martie 2009 16:45:31
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda qwerty-1 Marime 0.81 kb
#include <cstdio>
#include <cstring>

#define Sigma 26
#define MOD 104659

char C[Sigma][Sigma];
int Ant[Sigma], Act[Sigma];
int N, M;

int main()
{
    freopen("nrcuv.in","rt",stdin);
    freopen("nrcuv.out","wt",stdout);

    scanf("%d %d",&N, &M);

    while(M--)
    {
        char x, y;
        scanf(" %c %c",&x, &y);

        C[x - 'a'][y - 'a'] = C[y - 'a'][x - 'a'] = 1;
    }

    for(int i = 0; i < 26; ++i)
        Act[i] = Ant[i] = 1;

    for(int i = 1; i < N; ++i)
    {
        memset(Act, 0, sizeof Act);
        for(int j = 0; j < 26; ++j)
            for(int k = 0; k < 26; ++k)
                if(C[k][j] == 0)
                    Act[j] = (Act[j] + Ant[k]) % MOD;

        memcpy(Ant, Act, sizeof Act);
    }
    int S = 0;
    for(int i = 0; i < 26; ++i)
        S = (S + Act[i]) % MOD;
    printf("%d\n",S);
}