Cod sursa(job #2086645)

Utilizator SchnitzelMannPavaloiu Gabriel SchnitzelMann Data 12 decembrie 2017 12:10:17
Problema Lista lui Andrei Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
#define r 104659
bool f[26][26];
long long dp[26][1001];
int main()
{
    int n,m,i,j,k;
    char c1,c2;
    in>>n>>m;
    for(i=0;i<m;i++)
    {
        in>>c1>>c2;
        c1-=97;
        c2-=97;
        if(!f[c1][c2])
        {
            dp[c1][1]++;
            if(c1!=c2)
                dp[c2][1]++;
            f[c1][c2]=1;
            f[c2][c1]=1;
        }
    }
    for(i=0;i<26;i++)
        dp[i][1]=26-dp[i][1];
    for(i=2;i<n;i++)
    {
        for(j=0;j<26;j++)
        {
            for(k=0;k<26;k++)
                dp[j][i]+=dp[k][i-1]*(1-f[j][k]);
            dp[j][i]%=r;
        }
    }
    for(i=1;i<26;i++)
        dp[0][n-1]+=dp[i][n-1];
    out<<dp[0][n-1]%r;
    return 0;
}