Cod sursa(job #2037116)

Utilizator Ioana_AndreeaCristescu Ioana Ioana_Andreea Data 11 octombrie 2017 19:09:22
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
using namespace std;

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

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

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] == 0)
        {
          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];
    Sol %= MOD;
  }
  fout << Sol << "\n";
}

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