Cod sursa(job #2396165)

Utilizator mircearoataMircea Roata Palade mircearoata Data 3 aprilie 2019 11:42:01
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda simulare_03_04_2019 Marime 0.89 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, m;
char ch1, ch2;
bool adiac[30][30];

int d[1005][30];

int main()
{
    in >> n >> m;
    for(int i = 1; i <= m; i++)
    {
        in >> ch1 >> ch2;
        adiac[ch1-'a'][ch2-'a'] = 1;
        adiac[ch2-'a'][ch1-'a'] = 1;
    }
    for(char ch = 'a'; ch <= 'z'; ch++)
        d[1][ch-'a'] = 1;
    for(int i = 2; i <= n; i++)
    {
        for(char ch = 'a'; ch <= 'z'; ch++)
        {
            for(char other = 'a'; other <= 'z'; other++)
            {
                if(!adiac[ch-'a'][other-'a'])
                    d[i][ch-'a'] = (d[i][ch-'a'] + d[i-1][other-'a']) % 104659;
            }
        }
    }
    int ans = 0;
    for(char ch = 'a'; ch <= 'z'; ch++)
        ans = (ans + d[n][ch-'a'])%104659;
    out << ans;
    return 0;
}