Cod sursa(job #960709)

Utilizator XladhenianGrigorita Vlad-Stefan Xladhenian Data 11 iunie 2013 00:05:53
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb

#include <fstream>
using namespace std;

#define modulo 104659

long count[26];
long count2[26];
long N,M;

long adjmat[26][26];

int main(void)
{
    fstream fin("nrcuv.in",ios::in);
    fstream fout("nrcuv.out",ios::out);

    for (long a = 0;a < 26;a += 1)
    {
        for (long b = 0;b < 26;b += 1)
        {
            adjmat[a][b] = 0XFFFFFFFF;
        }
    }

    fin >> N >> M;
    for (long a = 0;a < M;a += 1)
    {
        char S1[2],S2[2];
        fin >> S1 >> S2;
        adjmat[S1[0] - 'a'][S2[0] - 'a'] = 0;
        adjmat[S2[0] - 'a'][S1[0] - 'a'] = 0;
    }

    for (long i = 0;i < 26;i += 1)
    {
        count[i] = 1;
    }

    for (long i = 1;i < N;i += 1)
    {
        for (long a = 0;a < 26;a += 1)
        {
            count2[a] = 0;
            for (long b = 0;b < 26;b += 1)
            {
                count2[a] += adjmat[b][a] & count[b]; 
            }
        }
        for (long a = 0;a < 26;a += 1)
        {
            count[a] = count2[a] % modulo;
        }
    }

    long sum = 0;
    for (long i = 0;i < 26;i += 1)
    {
        sum += count[i];
    }
    sum %= modulo;

    fout << sum;

    fin.close();
    fout.close();
    return 0;
}