Cod sursa(job #1580678)

Utilizator Burbon13Burbon13 Burbon13 Data 25 ianuarie 2016 23:59:52
Problema Lista lui Andrei Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <cstdio>

using namespace std;

int l,m,t;
long long clc;
bool viz[30][30];
char sol[30];

int toint(char c) {
    return (int)c - 96;
}

void input() {
    scanf("%d %d\n", &l ,&m);
    char c1,c2;
    for(int i = 1; i <= m; ++i) {
        scanf("%c %c\n", &c1, &c2);
        if(not viz[toint(c1)][toint(c2)]) {
            ++ t;
            viz[toint(c1)][toint(c2)] = true;
        }
        if(not viz[toint(c2)][toint(c1)]) {
            ++ t;
            viz[toint(c2)][toint(c1)] = true;
        }
    }
}

void back(int pos) {
    if(pos == l) {
        ++ clc;
        return;
    }
    for(char c = 'a'; c <= 'z'; ++c)
        if(not viz[toint(c)][toint(sol[pos-1])]) {
            sol[pos] = c;
            back(pos+1);
        }
}

int main() {
    freopen("nrcuv.in", "r", stdin);
    freopen("nrcuv.out", "w", stdout);
    input();

    for(char c = 'a'; c <= 'z'; ++c){
        sol[0] = c;
        back(1);
    }

    printf("%lld\n", clc);

    return 0;
}