Submission #520676

# Submission time Handle Problem Language Result Execution time Memory
520676 2022-01-30T17:51:06 Z HaYoungJoon Rima (COCI17_rima) C++14
0 / 140
261 ms 160348 KB
#include <bits/stdc++.h>

using namespace std;

const int maxsize = 3*1e5;
int trie[3000001][26], timer = 0;
int dp[3000001], n, res = 0;
string a[500001];
vector<int> adj[3000001];

void addString(string s) {
    int cur = 0;
    for (char c: s) {
        int val = c - 'a';
        if (!trie[cur][val]) {
            adj[cur].emplace_back(++timer);
            trie[cur][val] = timer;
        }
        cur = trie[cur][val];
    }
    dp[cur]++;
}

void DFS(int u) {
    int maxnhanh1 = 0, maxnhanh2 = 0;
    for (int v: adj[u]) {
        DFS(v);
        if (dp[v] > maxnhanh1) {
            maxnhanh2 = maxnhanh1;
            maxnhanh1 = dp[v];
        } else maxnhanh2 = max(maxnhanh2,dp[v]);
    }
    int total = 0;
    for (int v: adj[u]) total += (dp[v] > 0);
    if (maxnhanh1) total += maxnhanh1 - 1;
    if (maxnhanh2) total += maxnhanh2 - 1;
    res = max(res,total);
    if (dp[u] && maxnhanh1) {
        for (int v: adj[u]) dp[u] += (dp[v] > 0);
        dp[u] += maxnhanh1 + 1;
        res = max(dp[u],res);
    }
}

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        reverse(a[i].begin(),a[i].end());
    }
    for (int i = 1; i <= n; i++) addString(a[i]);
    DFS(0);
    cout << res;
    return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 49 ms 86476 KB Output isn't correct
2 Incorrect 40 ms 86460 KB Output isn't correct
3 Incorrect 43 ms 86500 KB Output isn't correct
4 Incorrect 261 ms 160348 KB Output isn't correct
5 Incorrect 59 ms 89924 KB Output isn't correct
6 Incorrect 88 ms 150676 KB Output isn't correct
7 Incorrect 86 ms 150480 KB Output isn't correct
8 Incorrect 92 ms 150536 KB Output isn't correct
9 Incorrect 107 ms 154744 KB Output isn't correct
10 Incorrect 85 ms 150436 KB Output isn't correct