Cod sursa(job #1005564)

Utilizator harababurelPuscas Sergiu harababurel Data 5 octombrie 2013 11:52:18
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
#define nmax 1005
#define mod 104659
using namespace std;

bool prieten[300][300];
char a, b;
int n, m, dp[nmax][300];

int main() {
    ifstream f("nrcuv.in");
    ofstream g("nrcuv.out");
    for(int i='a'; i<='z'; i++)
        for(int j='a'; j<='z'; j++)
            prieten[i][j] = true;

    f>>n>>m;
    for(int i=1; i<=m; i++) {
        f>>a>>b;

        prieten[a][b] = false;
        prieten[b][a] = false;
    }

    for(int i='a'; i<='z'; i++) dp[1][i] = 1;



    for(int i=2; i<=n; i++)
        for(int litera_curenta ='a'; litera_curenta<='z'; litera_curenta++) {
            dp[i][litera_curenta] = 0;

            for(int litera_anterioara = 'a'; litera_anterioara<='z'; litera_anterioara++)
                if(prieten[litera_curenta][litera_anterioara])
                    dp[i][litera_curenta] = (dp[i][litera_curenta] + dp[i-1][litera_anterioara]) % mod;
        }

    int sol = 0;
    for(int i='a'; i<='z'; i++) sol += dp[n][i];

    g<<sol%mod<<"\n";





    return 0;
}