Cod sursa(job #375114)

Utilizator Addy.Adrian Draghici Addy. Data 19 decembrie 2009 15:42:27
Problema Lista lui Andrei Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#define N 26
#define X 104659
#define Nmax 1002

int S[N + 1][Nmax], viz[N + 1][N + 1];
int n, m, k, i, j, sol;
char x, y;

int main() {
	
	FILE *f = fopen("nrcuv.in", "r");
	FILE *g = fopen("nrcuv.out", "w");
	
	fscanf(f, "%d %d", &n, &m);
	for (i = 1; i <= m; i++) {
		fscanf(f, "\n%c %c", &x, &y);
		x -= 96, y -= 96;
		viz[x][y] = viz[y][x] = 1;
	}
	
	for (i = 1; i <= N; i++)
		S[i][1] = 1;
	
	for (k = 2; k <= n; k++) {
		for (i = 1; i <= N; i++) {
			for (j = 1; j <= N; j++)
				if (!viz[i][j])
					S[i][k] = (S[i][k] + S[j][k-1]) % X;
		}
	}
	
	for (i = 1; i <= N; i++)
		sol += S[i][n];
	
	fprintf(g, "%d", sol);
	
	fclose(f);
	fclose(g);
	
	return 0;
}