Guest User

Untitled

a guest
Jun 16th, 2012
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.66 KB | None | 0 0
  1.  
  2. int n, m, p[N], st, en;
  3. vector<int> g[N];
  4. int col[N];
  5.  
  6. void dfs(int v, int cc) {
  7.     col[v] = cc;
  8.     for (int i = 0; i < g[v].size(); i++)
  9.         if (col[g[v][i]] == 0)
  10.             dfs(g[v][i], cc);
  11. }
  12.  
  13. int main() {   
  14.     ios_base::sync_with_stdio(0);
  15.     scanf("%d%d", &n, &m);
  16.     g[0].pb(1);
  17.     g[1].pb(0);
  18.     for (int i = 0; i < n; i++) {
  19.         scanf("%d", &p[i]);
  20.         p[i]--;
  21.         g[i].pb(p[i]);
  22.     }
  23.     int curcol = 1;
  24.     for (int i = 0; i < n; i++)
  25.         if (col[i] == 0) {
  26.             dfs(i, curcol);
  27.             curcol++;
  28.         }
  29.     for (int i = 0; i < m; i++) {
  30.         scanf("%d%d", &st, &en);
  31.         st--;en--;
  32.         if (col[st] == col[en])
  33.             cout << "Yes" << endl;
  34.         else
  35.             cout << "No" << endl;
  36.     }
  37.     return 0;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment