Cod sursa(job #915532)

Utilizator caliuxSegarceanu Calin caliux Data 15 martie 2013 09:40:51
Problema Lista lui Andrei Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
using namespace std;
int poz[27][27];
int dp[1000][30];
int N, M, i, j, j2;
char x, y;
int main(){
    freopen("nrcuv.in", "r", stdin);
    freopen("nrcuv.out", "w", stdout);
    scanf("%d%d\n", &N, &M);
    for(i = 1; i <= M; i++){
        scanf("%c %c\n", &x, &y);
        poz[x -'a' + 1][y -'a' + 1] = 1;
        poz[y -'a' + 1][x -'a' + 1] = 1;
    }
    for(i = 1; i <= 26; i++){
        dp[1][i] = 1;
    }
    for(i = 2; i <= N; i++){
        for(j = 1; j <= 26; j++){
            for(j2 = 1; j2 <= 26; j2++){
                if(!poz[j][j2]){
                    dp[i][j2] +=  dp[i-1][j];
                    dp[i][j2] %=  104659;
                }
            }
        }
    }
    int rez = 0;
    for(i = 1; i <= ('z' - 'a' + 1); i++){
        rez += dp[N][i];
        rez %= 104659;;
    }
    printf("%d", rez);
}