#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define F first
#define S second
#define all(x) (x).begin(), (x).end()
template<typename T, typename U>
ostream &operator<<(ostream &os, const pair<T, U> &p)
{
return os << "(" << p.F << "," << p.S << ")";
}
template<typename T>
void print(T v)
{
for(auto x : v)
cout << x << " ";
cout << "\n";
}
int task1 = 1, task2 = 1, task3 = 1, task4 = 1;
vector<int> adj[100005];
vector<int> rev_adj[100005];
vector<int> vis;
void dfs(int v, vector<int> &output, vector<int> adj[])
{
vis[v] = true;
for(int u : adj[v])
{
if(!vis[u]) dfs(u, output, adj);
}
output.push_back(v);
}
int solve_1(int N, int M, vector<int> &F, vector<vector<int>> &S)
{
return N - 1;
}
int solve_full(int N, int M, vector<int> &F, vector<vector<int>> &S)
{
for(int i = 0; i < N; i++)
{
adj[i].clear();
rev_adj[i].clear();
}
vis.assign(N, 0);
for(int i = 1; i < N; i++)
{
if(F[i] == 0) continue;
adj[i].push_back(F[i]);
rev_adj[F[i]].push_back(i);
}
for(auto &record : S)
{
for(int i = 0; i < record.size() - 1; i++)
{
adj[record[i]].push_back(record[i + 1]);
rev_adj[record[i + 1]].push_back(record[i]);
}
}
vector<int> topo;
for(int i = 1; i < N; i++)
{
if(!vis[i]) dfs(i, topo, adj);
}
reverse(all(topo));
int cnt = 0;
vis.assign(N, 0);
for(int v : topo)
{
if(!vis[v])
{
vector<int> comp;
dfs(v, comp, rev_adj);
cnt++;
}
}
return cnt;
}
int solve(int N, int M, vector<int> F, vector<vector<int>> S)
{
// if(M == 1) return solve_1(N, M, F, S);
return solve_full(N, M, F, S);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |