Submission #198366

#TimeUsernameProblemLanguageResultExecution timeMemory
198366alradLampice (COCI19_lampice)C++17
17 / 110
1172 ms3816 KiB
#include <bits/stdc++.h> using namespace std; const int N = 5e4 + 2; vector<vector<int> > g(N , vector<int>()); int ans = 0; string all; string walk = ""; bool good(string cur) { string other = cur; reverse(other.begin() , other.end()); return other == cur; } void dfs(int v , int p = -1) { walk.push_back(all[v - 1]); if (good(walk)) { ans = max(ans , (int)walk.size()); } for (int to : g[v]) { if (to != p) { dfs(to , v); walk.pop_back(); } } } int main() { ios_base :: sync_with_stdio(0); cin.tie(0) , cout.tie(0); int n; cin >> n; cin >> all; for (int i = 1; i < n; i++) { int u , v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } if (n <= 3000) { //solve subtask 1 for (int i = 1; i <= n; i++) { walk = ""; dfs(i); } cout << ans << '\n'; return 0; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...