Pagini recente » Cod sursa (job #339162) | Cod sursa (job #717797) | Cod sursa (job #1532113) | Cod sursa (job #2499858) | Cod sursa (job #2453901)
#include <bits/stdc++.h>
using namespace std;
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
const int NMAX = 30;
const int mod = 104659;
int n,m,nr;
vector <int> v[NMAX];
int convert(char x){
int intx = x;
return int(intx - 'a' + 1);
}
void dfs(int node, int length){
if(length == n)
nr++;
if(length < n)
for(auto it: v[node]){
dfs(it, length + 1);
}
}
int main(){
int i,j,xx,yy,maxn = -1;
unsigned long long p = 1, previous;
char x,y;
f >> n >> m;
for(i = 1 ; i <= m ; i++){
f >> x >> y;
xx = convert(x);
yy = convert(y);
v[xx].push_back(yy);
v[yy].push_back(xx);
maxn = max(maxn, max(xx,yy));
}
for(i = 1 ; i <= maxn ; i++){
sort(v[i].begin(), v[i].end());
for(j = 1 ; j < v[i].size() ; j++)
if(v[i][j - 1] == v[i][j]){
v[i].erase(v[i].begin() + j);
j--;
}
}
for(i = 1 ; i <= maxn ; i++)
if(!v[i].empty()){
dfs(i, 1);
}
for(i = 1 ; i <= n ; i++){
p *= 26;
if(p >= mod){
previous = p;
p %= mod;
}
}
if(nr <= p)
g << p - nr;
else
g << (previous - nr) % mod;
return 0;
}