Cod sursa(job #778386)

Utilizator visanrVisan Radu visanr Data 14 august 2012 16:42:10
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;

#define MOD 104659
#define nmax 1010

int N, M, dp[1010][27], sol;
bool v[30][30];
char A, B;

int main()
{
    freopen("nrcuv.in", "r", stdin);
    freopen("nrcuv.out", "w", stdout);
    int i, j, k;
    scanf("%i %i\n", &N, &M);
    for(; M; M --)
    {
          scanf("%c %c\n", &A, &B);
          v[A - 'a' + 1][B - 'a' + 1] = v[B - 'a' + 1][A - 'a' + 1] = true;
    }
    for(i = 1; i <= 26; i++) dp[1][i] = 1;
    for(i = 2; i <= N; i++)
          for(j = 1; j <= 26; j++)
                  for(k = 1; k <= 26; k++)
                        if(v[j][k] == false)
                                   dp[i][j] = (dp[i][j] + dp[i - 1][k]) % MOD;
    for(i = 1; i <= 26; i++)
          sol = (sol + dp[N][i]) % MOD;
    printf("%i\n", sol);
    scanf("%i", &i);
    return 0;
}