3 solutions
-
0
Guest MOD
-
1
#include <iostream> #include <vector> #include <cstring> using namespace std; const int MAX = 200050; int c[MAX], p[MAX], n, m, q, x; bool vis[MAX]; int dfs(int u) { if (vis[c[u]]) return 1; vis[c[u]] = true; return 1 + dfs(p[u]); } int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for (int i = 1; i <= n; i++) cin >> c[i]; for (int i = 1; i <= n; i++) cin >> p[i]; cin >> q; while (q--) { cin >> x; memset(vis, 0, sizeof(vis)); cout << dfs(x) << '\n'; } }
Information
- ID
- 573
- Time
- 2000ms
- Memory
- 512MiB
- Difficulty
- 10
- Tags
- (None)
- # Submissions
- 8
- Accepted
- 3
- Uploaded By