Pagini recente » Cod sursa (job #3281547) | Cod sursa (job #929929) | Cod sursa (job #1293993) | Cod sursa (job #668739) | Cod sursa (job #3039637)
#include <fstream>
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
int n, m, literePosibile[30], suma, mod = 104659, ramase[30], ramaseNext[30];
bool imposibile[30][30];
char x, y;
int main()
{
fin >> n >> m;
for (int i = 1; i <= m; i++)
{
fin >> x >> y;
int x1 = x - 'a' + 1;
int y1 = y - 'a' + 1;
imposibile[x1][y1] = imposibile[y1][x1] = true;
}
for (int i = 1; i <= 26; i++)
{
for (int j = 1; j <= 26; j++)
{
if (!imposibile[i][j])
literePosibile[i]++;
}
}
for (int i = 1; i <= 26; i++)
{
ramaseNext[i] = 1;
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= 26; j++)
{
ramase[j] = ramaseNext[j];
ramaseNext[j] = 0;
}
for (int j = 1; j <= 26; j++)
{
for (int k = 1; k <= 26; k++)
{
if (!imposibile[j][k])
{
ramaseNext[k] += ramase[j];
ramaseNext[k] %= mod;
}
}
}
}
for (int i = 1; i <= 26; i++)
{
suma += ramase[i];
}
suma %= mod;
fout << suma;
}