From 69c59384a0d7625f1d7651bb9fa0377fca4bbf42 Mon Sep 17 00:00:00 2001 From: hitanshu-mehta <44025541+hitanshu-mehta@users.noreply.github.com> Date: Sat, 5 Oct 2019 09:46:07 +0530 Subject: [PATCH 1/3] Create Kahn's algorithm.cpp --- Kahn's algorithm.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 Kahn's algorithm.cpp diff --git a/Kahn's algorithm.cpp b/Kahn's algorithm.cpp new file mode 100644 index 0000000..af66554 --- /dev/null +++ b/Kahn's algorithm.cpp @@ -0,0 +1,68 @@ +#include +#define ll long long int +#define v vector +using namespace std; +int n, m; +v in_deg; +queue q; +v res; +void BFS(v adj[], int curr) +{ + while (!q.empty()) + { + curr = q.front(); + res.push_back(curr); + q.pop(); + for (int i = 0; i < adj[curr].size(); i++) + { + int To = adj[curr][i]; + in_deg[To]--; + if (in_deg[To] == 0) + q.push(To); + } + } +} + +void Kahn_algo(v adj[]) +{ + for (int i = 0; i < n; i++) + if (in_deg[i] == 0) + q.push(i); + BFS(adj, q.front()); +} + +int main() +{ + freopen("./input.txt", "r", stdin); + freopen("../output.txt", "w", stdout); + int a, b; + cin >> n >> m; + v adj[n]; + for (int i = 0; i < n; i++) + in_deg.push_back(0); + for (int i = 0; i < m; i++) + { + cin >> a >> b; + adj[a].push_back(b); + in_deg[b]++; + } + Kahn_algo(adj); + for (int i = 0; i < res.size(); i++) + cout << res[i] << " "; + + return 0; +} +/* +INPUT : +5 +6 +1 0 +2 1 +2 4 +4 1 +3 0 +3 1 + +OUTPUT: +2 3 4 1 0 +*/ From 4bcbdb9b2f40e576c3209d4e1daa7db773b10d70 Mon Sep 17 00:00:00 2001 From: hitanshu-mehta <44025541+hitanshu-mehta@users.noreply.github.com> Date: Sat, 5 Oct 2019 09:48:50 +0530 Subject: [PATCH 2/3] Create Kahn's algorithm.cpp --- Kahn's algorithm/Kahn's algorithm.cpp | 68 +++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 Kahn's algorithm/Kahn's algorithm.cpp diff --git a/Kahn's algorithm/Kahn's algorithm.cpp b/Kahn's algorithm/Kahn's algorithm.cpp new file mode 100644 index 0000000..af66554 --- /dev/null +++ b/Kahn's algorithm/Kahn's algorithm.cpp @@ -0,0 +1,68 @@ +#include +#define ll long long int +#define v vector +using namespace std; +int n, m; +v in_deg; +queue q; +v res; +void BFS(v adj[], int curr) +{ + while (!q.empty()) + { + curr = q.front(); + res.push_back(curr); + q.pop(); + for (int i = 0; i < adj[curr].size(); i++) + { + int To = adj[curr][i]; + in_deg[To]--; + if (in_deg[To] == 0) + q.push(To); + } + } +} + +void Kahn_algo(v adj[]) +{ + for (int i = 0; i < n; i++) + if (in_deg[i] == 0) + q.push(i); + BFS(adj, q.front()); +} + +int main() +{ + freopen("./input.txt", "r", stdin); + freopen("../output.txt", "w", stdout); + int a, b; + cin >> n >> m; + v adj[n]; + for (int i = 0; i < n; i++) + in_deg.push_back(0); + for (int i = 0; i < m; i++) + { + cin >> a >> b; + adj[a].push_back(b); + in_deg[b]++; + } + Kahn_algo(adj); + for (int i = 0; i < res.size(); i++) + cout << res[i] << " "; + + return 0; +} +/* +INPUT : +5 +6 +1 0 +2 1 +2 4 +4 1 +3 0 +3 1 + +OUTPUT: +2 3 4 1 0 +*/ From 883f1d96d88a1cb1e970a1ba6cae8bfbb83e3842 Mon Sep 17 00:00:00 2001 From: hitanshu-mehta <44025541+hitanshu-mehta@users.noreply.github.com> Date: Sat, 5 Oct 2019 09:53:08 +0530 Subject: [PATCH 3/3] Delete Kahn's algorithm.cpp --- Kahn's algorithm.cpp | 68 -------------------------------------------- 1 file changed, 68 deletions(-) delete mode 100644 Kahn's algorithm.cpp diff --git a/Kahn's algorithm.cpp b/Kahn's algorithm.cpp deleted file mode 100644 index af66554..0000000 --- a/Kahn's algorithm.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include -#define ll long long int -#define v vector -using namespace std; -int n, m; -v in_deg; -queue q; -v res; -void BFS(v adj[], int curr) -{ - while (!q.empty()) - { - curr = q.front(); - res.push_back(curr); - q.pop(); - for (int i = 0; i < adj[curr].size(); i++) - { - int To = adj[curr][i]; - in_deg[To]--; - if (in_deg[To] == 0) - q.push(To); - } - } -} - -void Kahn_algo(v adj[]) -{ - for (int i = 0; i < n; i++) - if (in_deg[i] == 0) - q.push(i); - BFS(adj, q.front()); -} - -int main() -{ - freopen("./input.txt", "r", stdin); - freopen("../output.txt", "w", stdout); - int a, b; - cin >> n >> m; - v adj[n]; - for (int i = 0; i < n; i++) - in_deg.push_back(0); - for (int i = 0; i < m; i++) - { - cin >> a >> b; - adj[a].push_back(b); - in_deg[b]++; - } - Kahn_algo(adj); - for (int i = 0; i < res.size(); i++) - cout << res[i] << " "; - - return 0; -} -/* -INPUT : -5 -6 -1 0 -2 1 -2 4 -4 1 -3 0 -3 1 - -OUTPUT: -2 3 4 1 0 -*/