Submission #1274022

#TimeUsernameProblemLanguageResultExecution timeMemory
1274022kawhietSeptember (APIO24_september)C++20
0 / 100
1093 ms1114112 KiB
#include <bits/stdc++.h>
#include "september.h"
using namespace std;

constexpr int N = 1e5 + 1;

set<int> t[N];
vector<int> g[N];

void dfs(int u, int p) {
    t[u].insert(u);
    for (auto v : g[u]) {
        if (v == p) continue;
        dfs(v, u);
        for (auto x : t[v]) {
            t[u].insert(x);
        }
    }
}

int solve(int n, int m, vector<int> p, vector<vector<int>> s) {
    for (int i = 1; i < n; i++) {
        g[p[i]].push_back(i);
        g[i].push_back(p[i]);
    }
    dfs(0, -1);
    int res = 0;
    vector<set<int>> a(m);
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < m; j++) {
            a[j].insert(s[j][i]);
        }
        bool is = 1;
        for (int j = 0; j < m; j++) {
            for (auto x : a[j]) {
                for (auto y : t[x]) {
                    if (!a[j].count(y)) {
                        is = 0;
                        break;
                    }
                }
                if (!is) break;
            }
            if (!is) break;
        }
        if (is) {
            res++;
            for (int j = 0; j < m; j++) {
                a[j].clear();
            }
        }
    }
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...