Cod sursa(job #1470820)

Utilizator ancabdBadiu Anca ancabd Data 12 august 2015 13:35:32
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <cstring>
#define MAX 104659

using namespace std;

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

int n, m, c[1001][1001], p;
char a, b;
bool dif[31][31];

int calc(int i, int j);
int main()
{
    memset(c, -1, sizeof(c));

    fin >> n >> m;

    for (int i = 1; i<=m; i++)
    {
        fin >> a >> b;
        //int h, g;
        //h= int(a) -96;
        //g = int(b) - 96;
        dif[int(a) - 96][int(b) - 96] = 1;
        dif[int(b) - 96][int(a) - 96] = 1;
    }
   /* for (int i = 1; i<=30; i++)
    {
        for (int j = 1; j<=30; j++)fout << dif[i][j] << ' ';
        fout << '\n';
    }*/
    fout << calc(29, 0);
}
int calc(int i, int j)
{
    int s =0;
    if (c[i][j] !=-1)return c[i][j];
    if (j == n)return 1;

    for(int q = 1; q < 27; q++)
        if(dif[i][q] == 0)
        {
            s += calc(q, j + 1);
            s%=MAX;
        }

    c[i][j] = s;
    return s;
}