Submission #1203066

#TimeUsernameProblemLanguageResultExecution timeMemory
1203066idonoamSeptember (APIO24_september)C++20
0 / 100
1 ms324 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int solve(int N, int M, vector<int> F, vector<vector<int>> S)
{
    vector<vector<int>> chi(N);
    for (int i = 1; i < N; i++)
    {
        chi[F[i]].push_back(i);
    }
    int op = 1e9;
    for (int j = 0; j < M; j++)
    {
        set<int> s;
        int cur = 0;
        for (int i = 0; i < N - 1; i++)
        {
            if (s.empty())
                cur++;
            stack<int> st;
            st.push(S[j][i]);
            while (!st.empty())
            {
                int a = st.top();
                st.pop();
                if (s.find(a) == s.end())
                {
                    for (int k = 0; k < chi[a].size(); k++)
                    {
                        st.push(chi[a][k]);
                    }
                }
                s.insert(a);
            }
            s.erase(S[j][i]);
        }
        op = min(cur, op);
    }
    return op;
}
/*
int main()
{
    cout << solve(5, 2, {-1, 0, 0, 1, 1}, {{1, 2, 3, 4}, {4, 1, 2, 3}});
}*/
#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...