Submission #1186646

#TimeUsernameProblemLanguageResultExecution timeMemory
1186646Thanhs9월 (APIO24_september)C++20
0 / 100
2 ms5188 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++) 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 = 0; i < N; i++) for (int j : g[i]) r[j].push_back(i); fill(vis, vis + N, 0); for (int i = 0; i < N; i++) if (!vis[i]) dfs(i); reverse(all(order)); int ans = 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...