Cod sursa(job #1888026)

Utilizator KanghuAndre Popescu Kanghu Data 21 februarie 2017 21:29:04
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <iostream>
#include <fstream>

using namespace std;

int N, M;
int U[30][30];
int D[1010][30];
int C;

int main()
{
    ifstream i("nrcuv.in");
    ofstream o("nrcuv.out");

    i >> N >> M;

    for(int a = 0; a < M; a++)
    {
        char z, x;
        int k, y;

        i >> z >> x;

        k = z - 'a';
        y = x - 'a';

        if(!U[k][y])
        {
            if(k != y)
            {
                U[k][y] = 1;
                U[y][k] = 1;

                C += 2;
            }

            else
            {
                U[k][y] = 1;

                C += 1;
            }
        }
    }

    for(int a = 0; a < 30; a++)
    {
        D[0][a] = 1;
    }

    for(int a = 1; a < N; a++)
    {
        for(int b = 0; b < 26; b++)
        {
            for(int c = 0; c < 26; c++)
            {
                if(!U[b][c])
                {
                    D[a][c] += D[a - 1][b];
                    D[a][c] = D[a][c] % 104659;
                }
            }
        }
    }

    int S = 0;

    for(int a = 0; a < 26; a++)
    {
        S += D[N - 1][a];
        S = S % 104659;
    }

    o << S % 104659;

    return 0;
}