Submission #1370080

#TimeUsernameProblemLanguageResultExecution timeMemory
1370080Sam_a179월 (APIO24_september)C++20
0 / 100
1113 ms456344 KiB
#include "september.h"

#include <bits/stdc++.h>
using namespace std;

const int maxN = 1e5 + 10;
int tin[maxN], tout[maxN];
vector<int> adj[maxN];
int p[maxN], child[maxN];
bool deleted[maxN];
int timer;
set<pair<int, int>> st;

void dfs(int node, int parent)
{
    tin[node] = timer++;
    p[node] = parent;
    st.insert({tin[node], node});

    for (int i : adj[node])
    {
        if (i == parent)
            continue;
        dfs(i, node);
        child[node]++;
    }
    tout[node] = timer - 1;
}

void del(int node)
{
    st.erase({tin[node], node});
    deleted[node] = true;
}

int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S)
{

    for (int i = 0; i < N; ++i)
    {
        if (F[i] != -1)
        {
            adj[F[i]].push_back(i);
            adj[i].push_back(F[i]);
        }
    }

    dfs(0, -1);

    vector<int> f = S[0];
    int ans = 0;
    for (int i = 0; i < f.size(); ++i)
    {

        int node = f[i];
        if (deleted[node])
            continue;
        ++ans;

        while (true)
        {
            auto it = st.lower_bound({tin[node], -1});
            if (it == st.end() || it->first > tout[node])
            {
                break;
            }
            del(it->second);
        }
    }

    return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...