Pagini recente » Cod sursa (job #2151002) | Cod sursa (job #2974365) | Cod sursa (job #300440) | Cod sursa (job #1367561) | Cod sursa (job #611133)
Cod sursa(job #611133)
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cassert>
#include <vector>
#include <fstream>
using namespace std;
void read(const char *);
void solve();
void check();
void print(const char *);
int main()
{
read("nrcuv.in");
solve();
check();
print("nrcuv.out");
return 0;
}
int a[27][27];
vector<int> v[27];
int nr_v, n;
int nr;
long long dp[1001][27];
void read(const char * file_in)
{
char left, right;
ifstream f ( file_in , ifstream::in );
f >> n >> nr_v;
for (int i = 1; i <= nr_v; ++i)
{
f >> left >> right;
left = left - 'a' + 1;
right = right - 'a' + 1;
a[left][right] = 1;
a[right][left] = 1;
}
for (int i = 1; i <= 26; ++i)
{
v[i].clear();
for (int j = 1; j <= 26; ++j)
v[i].push_back(j);
}
f.close();
};
long long q[27];
void solve()
{
//init
for (int i = 1; i <= 26; ++i)
dp[1][i] = 1;
for (int i = 2; i <= n; ++i)
{
for (int j = 1; j <= 26; ++j)
{
q[j] = 0;
for (int k = 1; k <= 26; ++k)
if (a[j][k] == 0)
q[j] = (q[j] + dp[i-1][k])%104659;
}
for (int j = 1; j <= 26; ++j)
dp[i][j] = q[j];
}
};
void check()
{
};
void print(const char * file_out)
{
long long sum = 0;
for (int i = 1; i <= 26; ++i)
sum = (sum + dp[n][i]) % 104659;
ofstream ofs(file_out, ifstream::out);
ofs << sum;
ofs.close();
};