Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int n, m, p[N], st, en;
- vector<int> g[N];
- int col[N];
- void dfs(int v, int cc) {
- col[v] = cc;
- for (int i = 0; i < g[v].size(); i++)
- if (col[g[v][i]] == 0)
- dfs(g[v][i], cc);
- }
- int main() {
- ios_base::sync_with_stdio(0);
- scanf("%d%d", &n, &m);
- g[0].pb(1);
- g[1].pb(0);
- for (int i = 0; i < n; i++) {
- scanf("%d", &p[i]);
- p[i]--;
- g[i].pb(p[i]);
- }
- int curcol = 1;
- for (int i = 0; i < n; i++)
- if (col[i] == 0) {
- dfs(i, curcol);
- curcol++;
- }
- for (int i = 0; i < m; i++) {
- scanf("%d%d", &st, &en);
- st--;en--;
- if (col[st] == col[en])
- cout << "Yes" << endl;
- else
- cout << "No" << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment