Pagini recente » Cod sursa (job #2979090) | Cod sursa (job #2712029) | Cod sursa (job #1789409) | Cod sursa (job #20266) | Cod sursa (job #3251842)
#include <fstream>
#include <vector>
#include <unordered_set>
using namespace std;
ifstream cin("nrcuv.in");
ofstream cout("nrcuv.out");
int n,m;
vector<unordered_set<int>> f;
char l1,l2;
int dp[1002][26];
int main()
{
cin>>n>>m;
f.resize(26);
for(int i=0;i<m;i++)
{
cin>>l1>>l2;
f[int(l1-'a')].insert(int(l2-'a'));
f[int(l2-'a')].insert(int(l1-'a'));
}
for(int i=0;i<26;i++)
dp[1][i]=1;
int sum=26;
for(int i=2;i<=n;i++)
{
int aux=sum;
sum=0;
for(int lit=0;lit<26;lit++)
{
int cat=0;
for(auto it:f[lit])
{
cat+=dp[i-1][it];
}
dp[i][lit]=aux-cat;
sum+=dp[i][lit];
}
}
cout<<sum;
return 0;
}