Cod sursa(job #1766297)

Utilizator Lungu007Lungu Ionut Lungu007 Data 27 septembrie 2016 20:11:43
Problema Lista lui Andrei Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <fstream>
#define NMAX 1001
#define MMAX 2001
#define MOD 104659
#define ALF 26
using namespace std;

int d[NMAX][ALF],a[ALF][ALF],n,m;
char x,y;

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


int main()
{
    in >> n >> m;
    for(int i=0;i<m;i++)
    {
        in >> x >> y;
        a[x-'a'][y-'a'] = 1;
        a[y-'a'][x-'a'] = 1;
    }

    for(int i=0;i<ALF;i++)
    {
        d[1][i] = 1;
    }
    for(int i=2;i<=n;i++)
    {
        for(int j=0;j<ALF;j++)
        {
            for(int k=0;k<ALF;k++)
            {
                if(a[k][j]!=1)
                {
                    d[i][j] += d[i-1][k];
                }
            }
        }
    }

//    for(int i=0;i<=n;i++)
//    {
//        for(int j=0;j<ALF;j++)
//        {
//            cout << d[i][j] << " ";
//        }
//        cout << endl;
//    }
    long long sum = 0;
    for(int i=0;i<ALF;i++)
    {
        sum += d[n][i];
        sum %=MOD;
    }
    out << sum%MOD;
    return 0;
}