Cod sursa(job #794446)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 6 octombrie 2012 12:39:10
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <vector>
#define DN 104659
using namespace std;

vector<char> list[35];
bool viz[35][35];
int dp[1005][35]; // dp[i][j] = nr max de posibilitati de lungimea i care se termina cu litera j

int main()
{
    int n,m;
    ifstream f("nrcuv.in");
    ofstream g("nrcuv.out");
    f>>n>>m;
    for(int i=1;i<=m;i++)
    {
        char l1,l2;
        f>>l1>>l2;
        viz[l1-'a'][l2-'a']=1;
        viz[l2-'a'][l1-'a']=1;
    }
    for(int j=0;j<=25;j++)
        dp[1][j]=1;
    for(int i=2;i<=n;i++)
    {
        for(int j=0;j<=25;j++)
        {
            // litera curenta j
            for(int k=0;k<=25;k++)
                if(viz[j][k]==0)
                    dp[i][j]=(dp[i][j]+dp[i-1][k])%DN;
        }
    }
    int S=0;
    for(int j=0;j<=25;j++)
        S=(S+dp[n][j])%DN;
    g<<S;
    return 0;
}