Pagini recente » Istoria paginii utilizator/danainfo | Istoria paginii runda/globe/clasament | Profil Onerin | Diferente pentru olimpici intre reviziile 175 si 174 | Cod sursa (job #2245890)
#include<bits/stdc++.h>
#define MOD 104659
using namespace std;
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
int dp[10005][30],inter[40][40];
char c,a;
int n,m;
long long sol;
vector<int> V[30];
int main()
{
f>>n>>m;
for(int i=1;i<=m;++i)
{
f>>c>>a;
inter[c-'a'][a-'a']=inter[a-'a'][c-'a']=1;
}
for(int i=0;i<26;++i)
{
for(int j=0;j<26;++j)
{
if(!inter[i][j])
V[i].push_back(j);
}
}
for(int i=0;i<26;++i)
dp[1][i]=1;
for(int i=2;i<=n;++i)
for(int j=0;j<26;++j)
for(vector<int>::iterator it=V[j].begin();it<V[j].end();++it)
dp[i][j]=(dp[i][j]+dp[i-1][*it])%MOD;
for(int i=0;i<26;++i)
{
sol=(sol+dp[n][i])%MOD;
}
g<<sol;
}