Pagini recente » Istoria paginii runda/simulare2/clasament | Cod sursa (job #777321) | Cod sursa (job #1750339) | Cod sursa (job #95943) | Cod sursa (job #551471)
Cod sursa(job #551471)
#include<fstream>
#define MOD 104659
using namespace std;
long long a[27][27], prec[27], c[27], n, m, REZ=26;
char x, y;
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
void Citeste()
{
int i, j, ok;
f>>n>>m;
for (i=1; i<=m; ++i)
{
f>>x>>y;
a[x-'a'+1][y-'a'+1]=a[y-'a'+1][x-'a'+1]=1;
}
for (i=1; i<27; ++i)
{
ok=0;
for (j=1; j<27; ++j)
if (a[i][j]==1) { ok=1; break; }
prec[i]=ok;
}
}
void Copie()
{
int i;
for (i=1; i<27; ++i) prec[i]=c[i];
}
void Solve()
{
int i, j, k;
for (i=2; i<=n; ++i)
{
for (j=1; j<27; ++j)
if (prec[j]!=0)
for (k=1; k<27; ++k)
c[k]=(c[k]+a[j][k]*prec[j])%MOD;
Copie();
REZ=(REZ*26)%MOD;
}
for (i=1; i<27; ++i) REZ-=c[i];
while (REZ<0) REZ+=MOD;
g<<REZ<<"\n";
}
int main()
{
Citeste();
Solve();
f.close();
g.close();
return 0;
}