Cod sursa(job #2126303)

Utilizator valorosu_300Cristian Gherman valorosu_300 Data 9 februarie 2018 14:59:01
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
const int N = 1002, L = 28, R = 104659;
int pos[N][L];
bool ok[L][L];
int solve(int n){
    int sol = 0;
    for(int i=1;i<=26;i++)
        pos[1][i] = 1;
    for(int i=2;i<=n;i++)
        for(int j=1;j<=26;j++)
            for(int k=1;k<=26;k++)
                if(ok[j][k] == false)
                    pos[i][j] = (pos[i][j] + pos[i-1][k]) % R;
    for(int i=1;i<=26;i++)
        sol = (sol + pos[n][i]) % R;
    return sol;
}
int main()
{
    int n, m;
    char x, y;
    in>>n>>m;
    for(int i=1;i<=m;i++){
        in>>x>>y;
        ok[x-'a'+1][y-'a'+1] = ok[y-'a'+1][x-'a'+1] = true;
    }
    in.close();
    out<<solve(n)<<"\n";
    out.close();
    return 0;
}