Pagini recente » Cod sursa (job #2955358) | Cod sursa (job #57569) | Cod sursa (job #573741) | Cod sursa (job #1785391) | Cod sursa (job #1778015)
#include<cstdio>
#include<vector>
std::vector<int> vecini['z'-'a'+1];
const int NMAX=1001,MOD=104659;
int d[NMAX]['z'-'a'+1];
void Initializare()
{
int aux['z'-'a'+1];
for(int i='a'-'a';i<='z'-'a';i++)
{
for(int j='a'-'a';j<='z'-'a';j++)
aux[j]=1;
for(int j=0;j<vecini[i].size();j++)
if(aux[vecini[i][j]])
aux[vecini[i][j]]=false;
vecini[i].clear();
for(int j='a'-'a';j<='z'-'a';j++)
if(aux[j])
vecini[i].push_back(j);
}
}
int main()
{
FILE *in=fopen("nrcuv.in","r");
int n=0,m=0;
fscanf(in,"%d %d ",&n,&m);
for(int i=0;i<m;i++)
{
char x,y;
fscanf(in,"%c %c ",&x,&y);
vecini[x-'a'].push_back(y-'a');
}
fclose(in);
Initializare();
for(int j='a'-'a';j<='z'-'a';j++)
d[1][j]=1;
for(int i=2;i<=n;i++)
{
for(int j='a'-'a';j<='z'-'a';j++)
{
if(d[i][j]==0)
continue;
for(int k=0;k<vecini[j].size();k++)
{
d[i][k]+=d[i][j];
d[i][k]%=MOD;
}
}
}
FILE *out=fopen("nrcuv.out","w");
/*for(int i='a'-'a';i<='z'-'a';i++)
{
for(int j=0;j<vecini[i].size();j++)
fprintf(out,"%d ",vecini[i][j]);
fprintf(out,"\n");
}*/
int rasp=0;
for(int j='a'-'a';j<='z'-'a';j++)
{
rasp+=d[n][j];
rasp%=MOD;
}
fprintf(out,"%d\n",rasp);
fclose(out);
}