Cod sursa(job #1879037)

Utilizator SenibelanMales Sebastian Senibelan Data 14 februarie 2017 17:58:42
Problema Lista lui Andrei Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
using namespace std;

ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");

const int Sigma = 26;
const int NMax = 1000;
const int MOD = 104659;
int N,M;
int A[Sigma+5][Sigma+5];
int DP[NMax+5][Sigma+5];

void Read()
{
  fin >> N >> M;
  for(int i = 1; i <= M; ++i)
    {
      char x,y;
      fin >> x >> y;
      A[x-'a'][y-'a'] = A[y-'a'][x-'a'] = 1;
    }
}

void Solve()
{
  for(int i = 0; i < Sigma; ++i)
    DP[1][i] = 1;

  for(int i = 2; i <= N; ++i)
      for(int j = 0; j < Sigma; ++j)
        for(int k = 0; k < Sigma; ++k)
          if(!A[j][k])
            {
              DP[i][j] += DP[i-1][k];
              DP[i][j] %= MOD;
            }
}

void Print()
{
  int Sol = 0;
  for(int i = 0; i < Sigma; ++i)
    Sol += DP[N][i];
  fout << Sol << "\n";
}

int main()
{
    Read();
    Solve();
    Print();
    return 0;
}