Cod sursa(job #1113072)

Utilizator StexanIarca Stefan Stexan Data 20 februarie 2014 12:12:14
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
using namespace std;

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

#define NMAX 1010
#define PMAX 27

const int MOD = 104659;

int M,N,DP[NMAX][PMAX];
bool Pairs[PMAX][PMAX];

int chartoInt(char C)
{
    return ((int)C - (int)'a');
}

void Read(){
    f>>N>>M; char x,y;
    for (int i = 1;  i <= M; i++) {
        f>>x>>y;
        Pairs[chartoInt(x)][chartoInt(y)] = true;
        Pairs[chartoInt(y)][chartoInt(x)] = true;
    }
}

void Init(){
        for (int j = 0; j < 26; j++) {
            DP[1][j] = 1;
        }
}

void Solve(){
    Init();
    
    for (int i = 2; i <= N; i++) {
        for (int j = 0; j < 26; j++) {
            for (int k = 0; k < 26; k++) {
                if (!Pairs[k][j]) {
                    DP[i][j] = (DP[i][j] + DP[i-1][k])%MOD;
                }
            }
        }
    }
}

void Write(){
    int sum = 0;
    
        for (int j = 0; j < 26; j++) {
            sum = (sum+ DP[N][j]) % MOD;
        }
    
    g<<sum;
}

int main()
{
    Read();
    Solve();
    Write();
}