Pagini recente » Cod sursa (job #1758232) | Cod sursa (job #1856648) | Cod sursa (job #776031) | Cod sursa (job #1634056) | Cod sursa (job #2057951)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
vector <pair <char,char> >rest ;
int mat[1001][27] ;
bool compara ( pair<char,char> c1 , pair<char,char> c2 )
{
if ( c1.first == c2.first )
return c1.second < c2.second ;
return c1.first < c2.first ;
}
int main()
{
int i , j , n , m , k , suma = 0 ;
char c1 , c2 ;
ifstream fin ("nrcuv.in") ;
ofstream fout ("nrcuv.out") ;
fin >> n >> m ;
for ( i = 1 ; i <= m ; i++ )
{
fin >> c1 >> c2 ;
rest.push_back(make_pair(c1,c2)) ;
}
sort(rest.begin(),rest.end(),compara) ;
for ( i = 0 ; i < m - 1 ; i++ )
{
if ( rest[i].first == rest[i+1].first && rest[i].second == rest[i+1].second )
rest.erase(rest.begin()+i) ;
if ( rest[i].first == rest[i+1].second && rest[i].second == rest[i+1].first )
rest.erase(rest.begin()+i) ;
}
for ( i = 1 ; i <= 26 ; i++ )
mat[1][i] = 1 ;
for ( i = 2 ; i <= n ; i++ )
{
for ( j = 1 ; j <= 26 ; j++ )
{
mat[i][j] = mat[i-1][j] + 25 ;
for ( k = 0 ; k <= rest.size() ; k++ )
{
if ( rest[k].second - 96 == j )
mat[i][j] = mat[i][j] - 2 ;
if ( rest[k].first == rest[k].second && rest[k].second - 96 == j )
mat[i][j]++ ;
}
}
}
for ( i = 1 ; i <= 26 ; i++ )
{
suma = suma + mat[n][i] ;
suma = suma % 104659 ;
}
fout << suma ;
}