Cod sursa(job #1674107)

Utilizator alittlezzCazaciuc Valentin alittlezz Data 4 aprilie 2016 13:29:05
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;

#define ll long long unsigned
#define pb push_back
#define mp make_pair

const int MOD = 104659;
bool res[26][26];
int dp[1005][26];

void init(){
    int i;
    for(i = 0;i < 26;i++){
        dp[1][i] = 1;
    }
}

void solve(int n){
    int i,j,k;
    for(i = 1;i <= n;i++){
        for(j = 0;j < 26;j++){
            for(k = 0;k < 26;k++){
                if(res[j][k] == 0){
                    dp[i][j] = (dp[i][j]+dp[i-1][k])%MOD;
                }
            }
        }
    }
}

int sum(int n){
    int i;
    int ans = 0;
    for(i = 0;i < 26;i++){
        ans = (ans+dp[n][i])%MOD;
    }
    return ans;
}

int main()
{
    freopen("nrcuv.in", "r", stdin);
    freopen("nrcuv.out", "w", stdout);
    int n,m,i;
    char c1,c2;
    scanf("%d %d",&n,&m);
    scanf("%c",&c1);
    for(i = 1;i <= m;i++){
        scanf("%c",&c1);
        scanf("%c",&c2);
        scanf("%c",&c2);
        res[c1-'a'][c2-'a'] = 1;
        res[c2-'a'][c1-'a'] = 1;
        scanf("%c",&c2);
    }
    init();
    solve(n);
    printf("%d",sum(n));
    return 0;
}