Cod sursa(job #1904993)

Utilizator FredyLup Lucia Fredy Data 5 martie 2017 21:08:28
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

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

#define lim 1010
#define mod 104659
int n,m,dp[lim][30];
char x,y;
bool imp[30][30];
/// dp[i][j] - nr max de cuv de lungime i care se pot forma si au u.l. j

int main()
{
    fin>>n>>m;
    for(int i=1; i<=m; i++)
    {
        fin>>x>>y;
        imp[x-'a'][y-'a']=1;
        imp[y-'a'][x-'a']=1;
    }

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

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

    long long rez=0;
    for(int i=0; i<26; i++)
        {
            rez+=dp[n][i];
            rez%=mod;
        }
    fout<<rez;

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