Cod sursa(job #2036379)

Utilizator shantih1Alex S Hill shantih1 Data 10 octombrie 2017 17:14:53
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");

long long n, m, i, j, a, b, sum, c[33][33], u[30], r[30], mod = 104659;
bool v[30][30], k;
char x, y;

int main () {
	
	fin >> n >> m;
	for (i = 1; i <= m; i++)
	{
		fin >> x >> y;
		a = x-96;	b = y-96;
		
		if (a > b)
		{	j = a;	a = b;	b = j;	}
		
		if (v[a][b] == 0)
		{
			v[a][b] = 1;
			c[a][0]++;	c[a][c[a][0]] = b;
			
			if (a != b)
			{	c[b][0]++;	c[b][c[b][0]] = a;	}
		}
	}
	
	for (i = 1; i <= 26; i++)	r[i] = 1;
	for (a = 1; a < n; a++)
	{
		sum = 0;
		for (i = 1; i <= 26; i++)
		{
			for (j = 1; j <= c[i][0]; j++)
				u[c[i][j]] -= r[i]; 
			
			sum += r[i];
		}
		
		for (i = 1; i <= 26; i++)
		{
			
			u[i] += sum;
			u[i] %= mod;
			r[i] = u[i];
			u[i] = 0;
		}
	}
	
	sum = 0;
	for (i = 1; i <= 26; i++)
	{
		sum += r[i];
		sum %= mod;
	}
	fout << sum << "\n";
}