int64_t
INF= std::numeric_limits<int64_t>::max();
48void addEdge(std::vector<std::vector<std::pair<int, int>>> *adj,
intu,
intv,
50(*adj)[u - 1].push_back(std::make_pair(v - 1, w));
66int dijkstra(std::vector<std::vector<std::pair<int, int>>> *adj,
ints,
intt) {
71std::vector<int64_t> dist(n,
INF);
76std::priority_queue<std::pair<int, int>, std::vector<std::pair<int, int>>,
77std::greater<std::pair<int, int>>>
81pq.push(std::make_pair(0, s));
88 intcurrentNode = pq.top().second;
91 intcurrentDist = pq.top().first;
97 for(std::pair<int, int> edge : (*adj)[currentNode]) {
99 if(currentDist + edge.second < dist[edge.first]) {
100dist[edge.first] = currentDist + edge.second;
101pq.push(std::make_pair(dist[edge.first], edge.first));
105 if(dist[t] !=
INF) {
114std::cout <<
"Initiatinig Predefined Tests..."<< std::endl;
115std::cout <<
"Initiating Test 1..."<< std::endl;
116std::vector<std::vector<std::pair<int, int>>> adj1(
1174, std::vector<std::pair<int, int>>());
125std::cout <<
"Test 1 Passed..."<< std::endl;
128std::cout <<
"Initiating Test 2..."<< std::endl;
130std::cout <<
"Test 2 Passed..."<< std::endl;
132std::vector<std::vector<std::pair<int, int>>> adj2(
1335, std::vector<std::pair<int, int>>());
145std::cout <<
"Initiating Test 3..."<< std::endl;
147std::cout <<
"Test 3 Passed..."<< std::endl;
148std::cout <<
"All Test Passed..."<< std::endl << std::endl;
156 intvertices = int(), edges = int();
157std::cout <<
"Enter the number of vertices : ";
158std::cin >> vertices;
159std::cout <<
"Enter the number of edges : ";
162std::vector<std::vector<std::pair<int, int>>> adj(
163vertices, std::vector<std::pair<int, int>>());
165 intu = int(), v = int(), w = int();
167std::cin >> u >> v >> w;
171 ints = int(), t = int();
175std::cout <<
"Target not reachable from source"<< std::endl;
177std::cout <<
"Shortest Path Distance : "<< dist << std::endl;
constexpr int64_t INF
for assert
void addEdge(std::vector< std::vector< int > > *adj, int u, int v)
Function that add edge between two nodes or vertices of graph.
int dijkstra(std::vector< std::vector< std::pair< int, int > > > *adj, int s, int t)
Function runs the dijkstra algorithm for some source vertex and target vertex in the graph and return...
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4