Pagini recente » Cod sursa (job #1836078) | Cod sursa (job #386954) | Cod sursa (job #513857) | Cod sursa (job #1301281) | Cod sursa (job #3340098)
#include<iostream>
#include<fstream>
#define MOD 104659
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
const int NMAX=1000;
const int NRLIT='z'-'a'+1;
int dp[NMAX][NRLIT];
//practic pentru fiecare litera ne uitam la ce litera punem in fata si
//poate fi nr le litere-cate litere nu pot fi alaturat
bool verif[NRLIT][NRLIT];//ce litere nu pot fi alaturate
int res[NRLIT];
int main(){
int n,perechi;
fin>>n>>perechi;
char a,b;
for(int i=0;i<perechi;++i){
fin>>a>>b;
verif[a-'a'][b-'a']=1;
verif[b-'a'][a-'a']=1;
}
for(int i=0;i<NRLIT;++i){
for(int j=0;j<NRLIT;++j){
res[i]+=verif[i][j];
}
// cout<<res[i]<<" ";
}
for(int i=0;i<NRLIT;++i){
dp[0][i]=1;
}
int sumCrt;
for(int i=1;i<n;++i){
sumCrt=0;
//cout<<"test"<<sumCrt<<endl;
for(int j=0;j<NRLIT;++j){
for(int k=0;k<NRLIT;++k){
if(verif[k][j]==0){
dp[i][j]+=dp[i-1][k];
dp[i][j]%=MOD;
}
}
}
}
// cout<<n<<endl;
long long sum=0;
for(int i=0;i<NRLIT;++i){
sum+=dp[n-1][i];
sum%=MOD;
}
fout<<sum;
return 0;
}