Pagini recente » Monitorul de evaluare | Cod sursa (job #3165613)
#include <fstream>
using namespace std;
int n,m,lista[200][200],dp[1001][1001];
#define mod 104659
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
int main(){
fin>>n>>m;
while(m--){
char a,b; fin>>a>>b;
int c1=a-'a'+1;
int c2=b-'a'+1;
lista[c1][c2]=lista[c2][c1]=1;
}
for(int i=1;i<=26;i++)
dp[1][i]=1;
for(int lun=2;lun<=n;lun++)
for(int lit=1;lit<=26;lit++)
for(int j=1;j<=26;j++)
if(lista[j][lit]==0) /// le pot uni
dp[lun][lit]+=dp[lun-1][j],dp[lun][lit]%=mod;
int rez=0;
for(int i=1;i<=26;i++)
rez+=dp[n][i],rez%=mod;
fout<<rez;
return 0;
}