Cod sursa(job #1094117)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 28 ianuarie 2014 21:56:39
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

#define mod 104659

using namespace std;

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

bool p[30][30];
int dp[1001][30];
char a,b;
int n,m;

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

    for (int i=1; i<=m; ++i)
    {
        fin>>a>>b;
        a -= 'a';
        b -= 'a';
        p[a][b] = 1;
        p[b][a] = 1;
    }

    for (int i=0; i<26; ++i)
        dp[1][i] = 1;

    for (int i=2; i<=n; ++i)
    {
        for (int j=0; j<26; ++j)
        {
            for (int k=0; k<26; ++k)
            {
                if (!p[j][k])
                {
                    dp[i][j] += dp[i-1][k];
                    if (dp[i][j] >= mod) dp[i][j] -= mod;
                }
            }
        }
    }

    int s = 0;

    for (int i=0; i<26; ++i)
    {
        s += dp[n][i];
        if (s >= mod) s -= mod;
    }

    fout<<s;
}