Cod sursa(job #970177)

Utilizator andreiblaj17Andrei Blaj andreiblaj17 Data 6 iulie 2013 09:22:16
Problema Lista lui Andrei Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#define nmax 1003

using namespace std;

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

int n,m,dp[nmax][28],s;
bool a[30][30];
char x,y,h,j;

int main()
{
    in >> n >> m;

    for (char i='a'; i<='z'; i++)
        for (j='a'; j<='z'; j++)
            a[i][j]=1;

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

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

    for (int i=2; i<=n; i++)
        for (j='a'; j<='z'; j++)
            for (h='a'; h<='z'; h++){
                if (a[j][h]==1 && a[h][j]==1) dp[i][j]+=dp[i-1][h];
                dp[i][j]%=104659;
            }

    for (char i='a'; i<='z'; i++){
        s+=dp[n][i];
        s%=104659;
    }

    out << s;

    return 0;
}