제출 #1186647

#제출 시각아이디문제언어결과실행 시간메모리
1186647Thanhs9월 (APIO24_september)C++20
100 / 100
151 ms26304 KiB

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

#define name "TENBAI"
#define fi first
#define se second
#define endl '\n'
#define setmin(x, y) x = min((x), (y))
#define setmax(x, y) x = max((x), (y))
#define sqr(x) ((x) * (x))
#define all(x) x.begin(), x.end()

mt19937 hdp(chrono::high_resolution_clock::now().time_since_epoch().count());
int rand(int l, int r){return l + ((hdp() % (r - l + 1)) + r - l + 1) % (r - l + 1);}

const int NM = 1e5 + 5;

vector<int> g[NM], r[NM], order;
bool vis[NM];

void dfs(int u)
{
    vis[u] = 1;
    for (int v : g[u])
        if (!vis[v])
            dfs(v);
    order.push_back(u);
}

void DFS(int u)
{
    vis[u] = 1;
    for (int v : r[u])
        if (!vis[v])
            DFS(v);
}

int solve(int N, int M, vector<int> F, vector<vector<int>> S)
{
    order.clear();
    fill(vis, vis + N, 0);
    for (int i = 0; i < N; i++)
        g[i].clear(), r[i].clear();
    for (int i = 1; i < N; i++)
        if (F[i])
            g[F[i]].push_back(i);
    for (auto t : S)
        for (int i = 1; i < t.size(); i++)
            g[t[i]].push_back(t[i - 1]);
    for (int i = 1; i < N; i++)
        for (int j : g[i])
            r[j].push_back(i);
    for (int i = 1; i < N; i++)
        if (!vis[i])
            dfs(i);
    reverse(all(order));
    int ans = 0;
    fill(vis, vis + N, 0);
    for (int u : order)
        if (!vis[u])
        {
            ans++;
            DFS(u);
        }
    return ans;
}
#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...