Cod sursa(job #1258897)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 9 noiembrie 2014 15:47:33
Problema Lista lui Andrei Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream>
#include<iostream>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
const int NMAX = 1005;
const int MOD = 104659;

int v[NMAX][30],n,m,ok[30][30];

void read()
{

    char a,b;
    in>>n>>m;
    for(int i = 1 ; i <= m ; i++){
        in>>a>>b;
        ok[a-96][b-96] = 1;
        ok[b-96][a-96] = 1;
    }
    in.close();
}

void solve()
{

    for(int i = 1 ; i <= 26 ; i++)
        v[1][i] = v[1][i-1] + 1;
    for(int i = 2 ; i <= n ; i++)
        for(int j = 1 ; j <= 26 ; j++)
        {
            v[i][j] = (v[i][j-1]+v[i-1][26])%MOD;
            for(int k = 1 ; k <= 26 ; k++)
                if(ok[k][j]){
                    v[i][j] = (v[i][j] - (v[i-1][k]-v[i-1][k-1])%MOD)%MOD;
                }
        }
    out<<v[n][26]%MOD;
}

int main()
{

    read();
    solve();
    return 0;
}