From 28764affb7788ce9e418fd0651f8be76a191f5e0 Mon Sep 17 00:00:00 2001 From: Gunjan Kumar Biswas Date: Fri, 7 Jan 2022 12:41:31 +0530 Subject: [PATCH 1/2] add Power of 2 file --- Bitmasking/Powerof2.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Bitmasking/Powerof2.txt diff --git a/Bitmasking/Powerof2.txt b/Bitmasking/Powerof2.txt new file mode 100644 index 0000000..a68b956 --- /dev/null +++ b/Bitmasking/Powerof2.txt @@ -0,0 +1,2 @@ +def isPowerOfTwo(self, n): + return (n>0) and (n & (n-1))==0 \ No newline at end of file From 3ed48ac5a13008619ac1ea801c7f5e0f42db2b40 Mon Sep 17 00:00:00 2001 From: Gunjan Kumar Biswas Date: Fri, 7 Jan 2022 12:56:12 +0530 Subject: [PATCH 2/2] added dijkstra file --- Graph/dijkstra.cpp | 106 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 Graph/dijkstra.cpp diff --git a/Graph/dijkstra.cpp b/Graph/dijkstra.cpp new file mode 100644 index 0000000..d005668 --- /dev/null +++ b/Graph/dijkstra.cpp @@ -0,0 +1,106 @@ +// Author : GUNJAN KUMAR BISWAS +#include +#define int long long +using namespace std; +void input_file() +{ +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} + +#define all(v) v.begin() , v.end() +#define int long long +#define pb push_back +#define ff first +#define ss second + +const int N = (int)( 2e5 + 10); +const int inf = (int)(1e18 + 10); +#define P pair + +map< P , int > mpp; +vectordist; +vectorparent; +vectoradj[N]; + +void dijkstra() +{ + priority_queue< P , vector

, greater

> pq; + pq.push({0, 1}); + // parent[1] = 0; + while (!pq.empty()) + { + auto i = pq.top(); + pq.pop(); + int distance = i.ff; + int node = i.ss; + + for (auto it : adj[node]) + { + if (distance + mpp[ {node, it}] < dist[it]) + { + dist[it] = distance + mpp[ {node, it}]; + parent[it] = node ; + pq.push({dist[it] , it}); + } + } + } + +} + +signed main() +{ + input_file(); + + int n, m; + cin >> n >> m; + dist = vector(n + 10); + parent = vector(n + 10); + for (int i = 1; i <= n; i++) + { + dist[i] = inf; + parent[i] = i; + } + dist[1] = 0; + for (int i = 1; i <= m; i++) + { + int u, v, w; + cin >> u >> v >> w; + mpp[ {u, v } ] = w; + mpp[ {v, u }] = w; + adj[v].pb(u); + adj[u].pb(v); + } + + dijkstra(); + /*for(auto it : mpp) + { + cout << it.ff.ff <<" "<< it.ff.ss << " ="<ans; + ans.pb(n); + int ele = n; + /*for(auto it :parent) + cout << it<<" "; + */ + if (dist[ele] == inf) // disconnected graph + { + cout << -1 << endl; + return 0; + } + while (ele != 1) + { + + ele = parent[ele]; + ans.pb(ele); + } + + reverse(all(ans)); + for (auto it : ans) + cout << it << " "; + cout << endl; + + return 0; +} \ No newline at end of file