Cod sursa(job #2438834)

Utilizator Briana_NeaguNeagu Briana Briana_Neagu Data 14 iulie 2019 02:21:20
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 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++ )
        {
          dp[jos][j] = 0;
            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 ;

}