Cod sursa(job #2596725)

Utilizator Anakin1001George Giorgiu Gica Anakin1001 Data 10 aprilie 2020 11:50:15
Problema Lista lui Andrei Scor 35
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>

using namespace std;

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

const int letters = 'z' - 'a' + 1;
const int N = 1001;
const int mod = 104659;
int v[letters + 1], d[N][letters + 1];
bool viz[letters + 1][letters + 1];

int main()
{   int n, m, i, j;
    char ch1, ch2;
    f >> n >> m;
    for ( i = 1; i <= letters; i++ )
        v[i] = letters;
    for ( i = 1; i <= m; i++ ){
        f >> ch1 >> ch2;
        int a = ch1 - 'a' + 1;
        int b = ch2 - 'a' + 1;
        if ( viz[a][b] == 0 ){
            if ( a == b )
                v[a]--;
            else{
                v[b]--;
                v[a]--;
            }
            viz[a][b] = viz[b][a] = 1;
        }
    }
    d[1][0] = letters;
    for ( i = 1; i <= letters; i++ )
        d[1][i] = 1;
    for ( i = 2; i <= n; i++ )
        for ( j = 1; j <= letters; j++ ){
            d[i][j] = d[i - 1][j] * v[j];
            d[i][0] = ( d[i][0] + d[i][j] ) % mod;
            d[i][j] = d[i][j] % mod;
        }
    g << d[n][0] % mod;
    return 0;
}