tien_noob

DFS ( With Adj List)

Feb 22nd, 2021 (edited)
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <numeric>
  4. #include <set>
  5. #include <queue>
  6. #include <stack>
  7. #include <vector>
  8. #include <climits>
  9. #include <string>
  10. #include <cstdio>
  11. #include <cmath>
  12. #define task "TESTCODE"
  13. using namespace std;
  14. int n, m, s, f, Trace[100001], x, y;
  15. vector<vector<int>> Adj;
  16. void read()
  17. {
  18.    cin >> n >> m >> s >> f;
  19.    Adj.resize(n + 1);
  20.    for (int i = 1; i <= m; ++ i)
  21.    {
  22.        cin >> x >> y;
  23.        Adj[x].push_back(y);
  24.    }
  25.    Trace[s] = -1;
  26. }
  27. void DFS (int u)
  28. {
  29.    for (int v : Adj[u])
  30.    {
  31.        if (Trace[v] == 0)
  32.        {
  33.            Trace[v] = u;
  34.            DFS(v);
  35.        }
  36.    }
  37. }
  38. void solve()
  39. {
  40.    DFS(s);
  41.    for (int i = 1; i <= n; ++ i)
  42.    {
  43.        if (Trace[i] != 0)
  44.        {
  45.            cout << i <<' ';
  46.        }
  47.    }
  48.    cout << '\n';
  49.    while (f != s)
  50.    {
  51.        cout << f << "<- ";
  52.        f = Trace[f];
  53.    }
  54.    cout << s;
  55. }
  56. int main()
  57. {
  58.    ios_base::sync_with_stdio(false);
  59.    cin.tie(nullptr);
  60.    //freopen(task".INP", "r", stdin);
  61.    //freopen(task".OUT", "w", stdout);
  62.    read();
  63.    solve();
  64. }
  65.  
Add Comment
Please, Sign In to add comment