70分求助TLE3个点#6#8#10
  • 板块P1278 单词游戏
  • 楼主wanys
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/8/14 15:53
  • 上次更新2024/8/14 17:33:32
查看原帖
70分求助TLE3个点#6#8#10
528751
wanys楼主2024/8/14 15:53
#include <iostream>
#include <string>
using namespace std;
int n;
int ans = 0;
struct node {
	char str[100];
	int lon = 0;
	char start = 0;
	char end = 0;
	int flag = 0; 

} a[100001] = {0};
void dfs(int x, int now) {
	if (now > ans) {
		ans = now;
	}
	for (int i = 1; i <= n; i++) {
		if (a[i].start == a[x].end && a[i].flag == 0) {
			a[i].flag = 1;
			dfs(i, now + a[i].lon);
			a[i].flag = 0;
		}
	}
}

int main() {
	//freopen("words.in", "r", stdin);
	//freopen("words.out", "w", stdout);
	cin >> n;
	for (int i = 1; i <= n; i++) {
		string tz;
		cin >> tz;
		for (int j = 0; j < tz.length(); j++) {
			a[i].str[j] = tz[j];
		}
		a[i].lon = tz.size();
		a[i].start = a[i].str[0];
		a[i].end = a[i].str[a[i].lon - 1];
	}
	for (int i = 1; i <= n; i++) {
		if (a[i].flag == 0) {
			a[i].flag = 1;
			dfs(i, a[i].lon);
			a[i].flag = 0;
		}
	}
	cout << ans;
	return 0;
}
2024/8/14 15:53
加载中...