Advertisement
maycod23

Graphs

Apr 13th, 2023
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.47 KB | None | 0 0
  1. // //dfs code for cycle detection
  2. // Vi vis(N);
  3. // vector<int> vis(MX);
  4. // vector<int> adj[MX]
  5. // Void dfs(int node, int root)
  6. // {
  7. // vis[node] = 1;
  8. // for (int i = 0; i < adj[node].size(); i++)
  9. // {
  10. // if (vis[adj[node][i]] == 0)
  11. // {
  12. // cout << adj[node][i] << endl;
  13. // dfs(adj[node][i], node);
  14.  
  15. // }
  16. // else if (vis[adj[node][i]] == 1 && adj[node][i] != root)
  17. // {
  18. // cout << ”Cycle detected” << endl;
  19. // exit(0);
  20. // }
  21.  
  22. // }
  23. // }
  24. // int main()
  25. // {
  26. // int nodes, edges;
  27. // cin >> nodes >> edges;
  28. // for (int i = 0; i < edges; i++)
  29. // {
  30. // int u, v;
  31. // cin >> u >> v;
  32. // adj[u].push_back(v);
  33. // adj[v].push_back(u);
  34. // }
  35. // dfs(1, 1);
  36. // }
  37. ///dfs code
  38. /*HAR HAR MAHADEV
  39. ヽ`、ヽ``、ヽ`ヽ`、、ヽ `ヽ 、ヽ`🌙`ヽヽ`ヽ、ヽ`
  40. ヽ`、ヽ``、ヽ 、``、 `、ヽ` 、` ヽ`ヽ、ヽ `、ヽ``、
  41. ヽ、``、`、ヽ``、 、ヽヽ`、`、、ヽヽ、``、 、 ヽ`、
  42. ヽ``、 ヽ`ヽ`、、ヽ `ヽ 、 🚶ヽ````ヽヽヽ`、、ヽ`、、ヽ*/
  43. # include <bits/stdc++.h>
  44. using namespace std;
  45. typedef long long ll;
  46. typedef unsigned long long ull;
  47. typedef long double ld;
  48.  
  49. typedef pair<int, int> pi;
  50. typedef pair<ll, ll> pl;
  51.  
  52. typedef vector<int> vi;
  53. typedef vector<ld> vd;
  54. typedef vector<ll> vl;
  55. typedef vector<pi> vpi;//typedef for datatype and #define for macro
  56.  
  57. # define fast ios_base::sync_with_stdio(false);cin.tie(NULL);
  58. # define MOD 1000000007
  59. # define endl '\n'
  60. # define FOR(i, a, b) for (int i=a; i<(b); i++)
  61. # define F0R(i, a) for (int i=0; i<(a); i++)
  62. # define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
  63. # define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)
  64. # define INF 9e18
  65. # define PI 3.14159265358979323846
  66. # define lb lower_bound
  67. # define ub upper_bound
  68. # define mp make_pair
  69. # define pb push_back
  70. # define fi first
  71. # define se second
  72. # define all(a) a.begin(), a.end()
  73. mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
  74. const int MX = 100001;
  75. // vector<int> vis(MX);
  76. // vector<int> adj[MX]
  77. // Void dfs(int node)
  78. // {
  79. // vis[node] = 1;
  80. // for (int i = 0; i < adj[node].size(); i++) /// for(auto &i : adj[node])
  81. // {
  82. // if (vis[adj[node][i]] == 0) // vis[i]=0
  83. // {
  84. // cout << adj[node][i] << endl; //
  85. // dfs(adj[node][i]);
  86. // }
  87. // }
  88. // }
  89. // int main()
  90. // {
  91. // int nodes, edges;
  92. // cin >> nodes >> edges;
  93. // for (int i = 1; i <= edges; i++) //dfs of graph(unidirectional)
  94. // {
  95. // int u, v;
  96. // cin >> u >> v;
  97. // adj[u].push_back(v);
  98. // adj[v].push_back(u);
  99. // }
  100. // // if 1 is root node
  101. // dfs(1);
  102. // }
  103. vector<int> vis(MX);
  104. vector<pair<int, int>> v[MX];
  105. // void dfs(int node)
  106. // {
  107. // vis[node] = 1;
  108. // int i;
  109. // for (i = 0; i < v[node].size(); i++)
  110. // {
  111. // if (vis[v[node][i]] == 0)//not visited
  112. // {
  113. // cout << v[node][i] << " " << endl;
  114. // dfs(v[node][i]);
  115. // }
  116. // }
  117. // }
  118. void dfs(int node, int root)
  119. {
  120. vis[node] = 1;
  121. int i;
  122. for (i = 0; i < v[node].size(); i++)
  123. {
  124. if (root == v[node][i])
  125. {
  126. continue;
  127. }
  128. if (vis[v[node][i]] == 0)//not visited
  129. {
  130. cout << v[node][i] << " " << endl;
  131. dfs(v[node][i], node);
  132. }
  133. else if (vis[v[node][i]] == 1)
  134. {
  135. cout << "cycle found" << endl;
  136. }
  137. }
  138. }
  139. int main()
  140. {
  141. cout << "enter the number of node: " << endl;
  142. int nodes, edges, i;
  143. cin >> nodes;
  144. cout << "enter the number of edges: " << endl;
  145. cin >> edges;
  146. cout << "enter the edges: " << endl;
  147. for (i = 0; i < edges; i++)
  148. {
  149. int a, b, w;
  150. cin >> a >> b >> w;
  151. v[a].emplace_back(b, w);
  152. v[b].push_back(make_pair(a, w));
  153. }
  154. //calling dfs function;
  155. cout << 1 << endl;
  156. dfs(1, 1);
  157. /// if 1 is a root node;\
  158. // queue<int> q;
  159. // q.push(1);
  160. // vis[1] = 1;
  161. // while (q.size() != 0)
  162. // {
  163. // int k = q.front();
  164. // q.pop();
  165. // for (int i = 0; i < v[k].size(); i++)
  166. // {
  167. // if (!vis[v[k][i]])
  168. // {
  169. // vis[v[k][i]] = 1;
  170. // q.push(v[k][i]);
  171. // }
  172. // }
  173. // }
  174. return 0;
  175. }
  176.  
  177. /////////////////////////bfs///////////////////////////////////
  178. // queue<int> q;
  179. // q.push(si);
  180. // vis[si]=1;
  181. // while(!q.empty())
  182. // {
  183. // int S=q.front();
  184. // q.pop();
  185. // for(auto& i:S)
  186. // {
  187. // if(!vis[i])
  188. // {
  189. // vis[i]=1;
  190. // q.push(i);
  191. // }
  192. // }
  193. // }
  194.  
  195. ////////////////////////all paths from src to target
  196. // vector<int> stk;
  197. // vector<vector<int>> ans;
  198. // class Solution
  199. // {
  200. // public:
  201. // void dfs(int src, int target, vector<vector<int>>& adj)
  202. // {
  203. // // vis[src] = 1;
  204. // for (auto i : adj[src])
  205. // {
  206. // if (i == target)
  207. // {
  208. // stk.push_back(i); ans.push_back(stk); stk.pop_back();
  209. // continue;
  210. // }
  211. // else
  212. // {
  213. // stk.push_back(i);
  214. // dfs(i, target, adj);
  215. // // vis[i]=0;
  216. // }
  217. // stk.pop_back();
  218. // }
  219. // }
  220. // vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& adj)
  221. // {
  222. // stk.clear(); ans.clear();
  223. // // vector<int> vis(adj.size(), 0);
  224. // stk.push_back(0);
  225. // dfs(0, adj.size()-1, adj);
  226. // return ans;
  227. // }
  228. // };
  229.  
  230.  
  231.  
  232.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement