Cod sursa(job #1468500)

Utilizator AndreiITCuriman Andrei AndreiIT Data 6 august 2015 11:04:49
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
int n, sol, mat[30][30], m;
int viz[30][1024];
int back_track(int l, int last)
{
    int sum=0;
    if (viz[last][l] != -1)
        return viz[last][l];
    if(l == n)
        return 1;
    for(int i=1; i <= 26; ++i)
    {
        if(mat[last][i] == 0)
            sum = (sum + back_track(l+1, i)) % 104659;
    }
    viz[last][l] = sum;
    return sum;
}
int main()
{
    fin>>n>>m;
    memset(viz, -1, sizeof(viz));
    for(int i=1; i <= m; ++i)
    {
        char x, z, q;
        fin>>x>>z;
        mat[x-'a'+1][z-'a'+1] = -1;
        mat[z-'a'+1][x-'a'+1] = -1;
    }
    fout<<back_track(0, 29);
    return 0;
}