Cod sursa(job #2438828)

Utilizator Briana_NeaguNeagu Briana Briana_Neagu Data 14 iulie 2019 01:57:48
Problema Lista lui Andrei Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("nrcuv.in");
ofstream g("nrcuv.out");

bool res[26][26] ;
int dp[2][26];
const int MOD = 104659;


int main()
{
  int n, m;
  f >> n >> m;

  for ( int i = 1 ; i <= m ; i++)
  {
     char a, b;
     f >> a >> b;
     res[a - 'a'][b - 'a'] = res[b - 'a'][a - 'a'] = true;
  }

  int sus = 0, jos = 1;
  int ans = 0;

  for ( int i = 1; i <= n; i++ )
  {
      for ( int j = 0 ; j <= 25; j++ )
      {
          if ( i == 1 )
              dp[jos][j] = 1;
          else
              for ( int k = 0 ; k <= 25; k++)
                  if ( !res[j][k] )
                  {
                      dp[jos][j] += dp[sus][k];
                      dp[jos][j] %= MOD;
                  }
          if ( i == n )
          {
              ans +=dp[jos][j];
              ans %= MOD;
          }

      }
      swap ( sus, jos );
  }

  g << ans ;

}