Cod sursa(job #722649)

Utilizator raluca_vacaruVacaru Raluca-Ioana raluca_vacaru Data 24 martie 2012 17:55:17
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <cstring>

using namespace std;

int n, m;
bool x[27][27];
int d[1001][27];

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

void solve () {
    int i, j, k;
    for (i=1; i<=26; ++i)
        d[1][i] = 1;
    for (k=1; k<=n; ++k)
        for (i=1; i<=26; ++i)
            for (j=1; j<=26; ++j) {
                if (x[j][i] == 0)
                    d[k][i] += d[k-1][j];
                d[k][i] %= 104659;
            }
}

long long sum () {
    int i;
    long long s=0;
    for (i=0; i<=26; ++i) {
        s += d[n][i];
        s %= 104659;
    }
    return s;
}

int main () {
    freopen("nrcuv.in", "r", stdin);
    read();
    fclose(stdout);
    solve();
    long long s = sum();
    freopen("nrcuv.out", "w", stdout);
    printf("%lld\n", s);
    fclose(stdout);
    return 0;
}