Advertisement
amu2002

DFS

Apr 29th, 2024 (edited)
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <omp.h>
  4.  
  5. using namespace std;
  6.  
  7. const int MAXN = 1e5;
  8.  
  9. vector<int> adj[MAXN+5]; // adjacency list
  10. bool visited[MAXN+5]; // mark visited nodes
  11.  
  12. void dfs(int node) {
  13.     visited[node] = true;
  14.     #pragma omp parallel for
  15.     for (int i = 0; i < adj[node].size(); i++) {
  16.         int next_node = adj[node][i];
  17.         if (!visited[next_node]) {
  18.             dfs(next_node);
  19.         }
  20.     }
  21. }
  22.  
  23. int main() {
  24.     cout << "Please enter nodes and edges";
  25.     int n, m; // number of nodes and edges
  26.     cin >> n >> m;
  27.  
  28.     for (int i = 1; i <= m; i++) {
  29.         int u, v; // edge between u and v
  30.         cin >> u >> v;
  31.         adj[u].push_back(v);
  32.         adj[v].push_back(u);
  33.     }
  34.  
  35.     int start_node; // start node of DFS
  36.     cin >> start_node;
  37.  
  38.     dfs(start_node);
  39.  
  40.     // Print visited nodes
  41.     for (int i = 1; i <= n; i++) {
  42.         if (visited[i]) {
  43.             cout << i << " ";
  44.         }
  45.     }
  46.     cout << endl;
  47.  
  48.     return 0;
  49. }
  50.  
Tags: HPC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement