diff --git a/BFS_DFS_ALGO/BFS.cpp b/BFS_DFS_ALGO/BFS.cpp new file mode 100644 index 0000000..99eaa58 --- /dev/null +++ b/BFS_DFS_ALGO/BFS.cpp @@ -0,0 +1,71 @@ +#include +#include +#include +using namespace std; + +void bfs(int start, vector>& adj, int n) { + vector visited(n, false); + queue q; + + visited[start] = true; + q.push(start); + + cout << "BFS Traversal: "; + + while (!q.empty()) { + int node = q.front(); + q.pop(); + cout << node << " "; + + for (int neighbour : adj[node]) { + if (!visited[neighbour]) { + visited[neighbour] = true; + q.push(neighbour); + } + } + } +} + +int main() { + int n, edges; + + cout << "Enter number of nodes: "; + cin >> n; + + cout << "Enter number of edges: "; + cin >> edges; + + vector> adj(n); + + cout << "Enter edges (u v):\n"; + for (int i = 0; i < edges; i++) { + int u, v; + cin >> u >> v; + + adj[u].push_back(v); + adj[v].push_back(u); + } + + int start; + cout << "Enter starting node for BFS: "; + cin >> start; + + bfs(start, adj, n); + + return 0; +} + +//Test Cases- +//--------INPUT--------------------------- +// Enter number of nodes: 5 +// Enter number of edges: 4 +// Enter edges (u v): +// 0 1 +// 0 2 +// 1 3 +// 2 4 +// Enter starting node for BFS: 0 + +//-----OUTPUT------------------------------- +// BFS Traversal: 0 1 2 3 4 + diff --git a/BFS_DFS_ALGO/BFS.exe b/BFS_DFS_ALGO/BFS.exe new file mode 100644 index 0000000..0f928dd Binary files /dev/null and b/BFS_DFS_ALGO/BFS.exe differ diff --git a/BFS_DFS_ALGO/DFS.cpp b/BFS_DFS_ALGO/DFS.cpp new file mode 100644 index 0000000..800bdff --- /dev/null +++ b/BFS_DFS_ALGO/DFS.cpp @@ -0,0 +1,59 @@ +#include +#include +using namespace std; + +void dfs(int node, vector>& adj, vector& visited) { + visited[node] = true; + cout << node << " "; + + for (int neighbour : adj[node]) { + if (!visited[neighbour]) { + dfs(neighbour, adj, visited); + } + } +} + +int main() { + int n, edges; + + cout << "Enter number of nodes: "; + cin >> n; + + cout << "Enter number of edges: "; + cin >> edges; + + vector> adj(n); + vector visited(n, false); + + cout << "Enter edges (u v):\n"; + for (int i = 0; i < edges; i++) { + int u, v; + cin >> u >> v; + + adj[u].push_back(v); + adj[v].push_back(u); // if Undirected graph else remove this line + } + + int start; + cout << "Enter starting node for DFS: "; + cin >> start; + + cout << "DFS Traversal: "; + dfs(start, adj, visited); + + return 0; +} + +//TEST_CASES- +//-----INPUT--------------------- +// Enter number of nodes: 5 +// Enter number of edges: 4 +// Enter edges (u v): +// 0 1 +// 0 2 +// 1 3 +// 2 4 +// Enter starting node for DFS: 0 + +//-----------OUTPUT-------------- +// DFS Traversal: 0 1 3 2 4