Pagini recente » Cod sursa (job #2206355) | Cod sursa (job #1841758) | Cod sursa (job #73370) | Cod sursa (job #2977377) | Cod sursa (job #695632)
Cod sursa(job #695632)
#include<fstream>
#include<cstdio>
using namespace std;
const int MaxN = 1001;
const int MaxL = 30;
const int Mod = 104659;
const char InFile[] = "nrcuv.in";
const char OutFile[] = "nrcuv.out";
int N,M,Sol,P[MaxL][MaxL],Din[MaxN][MaxL];
//Din[i][j] = numarul de siruri de lungime i care au ultima litera j
//P[i][j] = 1 , daca literele i si j nu pot fi alaturate
//P[i][j] = 0 , daca literele i si j pot fi alaturate
int main()
{
int i,j,k;
ifstream fin( InFile );
ofstream fout( OutFile );
char ch1,ch2;
fin >> N >> M;
for( ; M ; --M )
{
fin >> ch1 >> ch2;
P[ch1-'a'+1][ch2-'a'+1] = P[ch2-'a'+1][ch1-'a'+1] = 1;
}
M = 26;
for( j = 1 ; j <= M ; j++ )
Din[1][j] = 1;
for( i = 2 ; i <= N ; i++ )
for( j = 1 ; j <= M ; j++ )
for( k = 1 ; k <= M ; k++ )
if( !P[j][k] )
Din[i][j] = (Din[i][j]+Din[i-1][k]) % Mod;
Sol = 0;
for( j = 1 ; j <= M ; j++ )
Sol = (Sol + Din[N][j] )% Mod;
fout << Sol << '\n';
fin.close();
fout.close();
return 0;
}