Submission #1203086

#TimeUsernameProblemLanguageResultExecution timeMemory
1203086idonoamSeptember (APIO24_september)C++17
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 = 0;
    map<int, int> s;
    for (int i = 0; i < N - 1; i++)
    {
        if (s.empty())
            op++;
        for (int j = 0; j < M; j++)
        {
            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, M});
            }
            auto it = s.find(S[j][i]);
            pair<int, int> pc = *it;
            pc.second--;
            s.erase(S[j][i]);
            if (pc.second)
                s.insert(pc);
        }
    }
    return op;
}
#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...