답안 #524521

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
524521 2022-02-09T11:49:07 Z tato Trener (COCI20_trener) C++14
22 / 110
2000 ms 1024 KB
#include <bits/stdc++.h>

using namespace std;





long long p = 1e9+7;
map <string, long long > mp;
long long pas = 0;
int n,k;
vector <string > v[51];
long long g[51][1501];
bool check(string s, string l)
{
	
	string t = l.substr(0,l.size() - 1);
	string f = l.substr(1);
	if(s == t or s == f)
		return true;
	else
		return false;
	
}

long long dfs(pair <int,int> par,int m)
{
	if(m == n + 1)
		return 1;
	for(int i = 0; i < k; i++)
	if(check(v[par.first][par.second], v[m][i]))
		{
			long long cnt = dfs({m,i}, m + 1);
			g[par.first][par.second] = (g[par.first][par.second] + cnt) % p;
		}
			
	long long b = g[par.first][par.second];
	g[par.first][par.second] = 0;
	return b;
	
}

void answer()
{

	string s;
	cin >> n >> k;
	

	
	
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= k; j++)
			{
				cin >> s;
				v[i].push_back(s);
			}
	for (int i = 0; i < k; i++)
		pas = (dfs({1,i},2) + pas) % p;
	
	cout << pas;
	
	
}


int main()
{
	int t = 1;
	//cin >> t;
	
	while(t--)
		answer();
	
	
	
	
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 300 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 6 ms 304 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 772 ms 1020 KB Output is correct
2 Correct 640 ms 1024 KB Output is correct
3 Correct 1291 ms 1020 KB Output is correct
4 Execution timed out 2082 ms 716 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 300 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 6 ms 304 KB Output is correct
5 Correct 772 ms 1020 KB Output is correct
6 Correct 640 ms 1024 KB Output is correct
7 Correct 1291 ms 1020 KB Output is correct
8 Execution timed out 2082 ms 716 KB Time limit exceeded
9 Halted 0 ms 0 KB -