File tree Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ // Function to implement Bellman Ford
3+ // edges: array of arrays which represents the graph
4+ // S: source vertex to start traversing graph with
5+ // V: number of vertices
6+ bellmanFord(V, edges, S) {
7+ // Initialize distance array with a large value (1e8)
8+ let dis = new Array(V).fill(1e8);
9+ dis[S] = 0;
10+
11+ // Bellman Ford algorithm
12+ for (let i = 0; i < V - 1; i++) {
13+ for (let edge of edges) {
14+ let u = edge[0];
15+ let v = edge[1];
16+ let wt = edge[2];
17+
18+ // If you have not reached 'u' till now, move forward
19+ if (dis[u] !== 1e8 && dis[u] + wt < dis[v]) {
20+ // Update distance array
21+ dis[v] = dis[u] + wt;
22+ }
23+ }
24+ }
25+
26+ // Checking for negative cycle
27+ // Check for nth relaxation
28+ for (let edge of edges) {
29+ let u = edge[0];
30+ let v = edge[1];
31+ let wt = edge[2];
32+
33+ if (dis[u] !== 1e8 && dis[u] + wt < dis[v]) {
34+ // If the distance array gets reduced for the nth iteration
35+ // It means a negative cycle exists
36+ return [-1];
37+ }
38+ }
39+
40+ return dis;
41+ }
42+ }
43+
44+ // Example usage:
45+ let solution = new Solution();
46+ let V = 5; // Number of vertices
47+ let edges = [
48+ [0, 1, -1],
49+ [0, 2, 4],
50+ [1, 2, 3],
51+ [1, 3, 2],
52+ [1, 4, 2],
53+ [3, 2, 5],
54+ [3, 1, 1],
55+ [4, 3, -3]
56+ ];
57+ let S = 0; // Source vertex
58+
59+ console.log(solution.bellmanFord(V, edges, S));
You can’t perform that action at this time.
0 commit comments