Submission #1203097

#TimeUsernameProblemLanguageResultExecution timeMemory
1203097idonoamSeptember (APIO24_september)C++17
100 / 100
157 ms10432 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);
    }
    vector<bool> vis(N, false);
    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 (!vis[a])
                {
                    for (int k = 0; k < chi[a].size(); k++)
                    {
                        st.push(chi[a][k]);
                    }
                    s.insert({a, M});
                    vis[a] = true;
                }
            }
            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...