Cod sursa(job #2094432)

Utilizator Andrei_RAndrei Roceanu Andrei_R Data 25 decembrie 2017 20:52:15
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#include<iostream>
#include<algorithm>

using namespace std;

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

int c[30][30], dp[1005][30];
int n, m, sum;
char c1, c2;
int const MOD = 104659;

void citire()
{
    int i, ind1, ind2;
    f>>n>>m;
    for(int i=1; i<=m; i++){
        f>>c1>>c2;
        ind1 = c1 - 'a';
        ind2 = c2 - 'a';
        c[ind1][ind2] = c[ind2][ind1] = 1;
    }
}

void dinam()
{
    int i, j, k;
    for(i=0; i<26; i++)
        dp[1][i] = 1;

    for(i=2; i<=n; i++)
        for(j=0; j<26; j++)
            for(k=0; k<26; k++)
                if(c[j][k]==0)
                    dp[i][j] = (dp[i][j] + dp[i-1][k]) % MOD;

    for(i=0; i<26; i++){
        sum = (sum + dp[n][i]) % MOD;}

    g<<sum<<"\n";
}

int main()
{
    citire();
    dinam();
    return 0;
}