Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 80
Expand file tree
/
Copy pathBellmanFord.java
More file actions
Latest commit
119 lines (86 loc) · 2.16 KB
/
Copy pathBellmanFord.java
File metadata and controls
119 lines (86 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
importjava.util.*;
importjava.lang.*;
importjava.io.*;
classGraph {
classEdge {
intsrc, dest, weight;
Edge()
{
src = dest = weight = 0;
}
};
intV, E;
Edgeedge[];
Graph(intv, inte)
{
V = v;
E = e;
edge = newEdge[e];
for (inti = 0; i < e; ++i)
edge[i] = newEdge();
}
voidBellmanFord(Graphgraph, intsrc)
{
intV = graph.V, E = graph.E;
intdist[] = newint[V];
for (inti = 0; i < V; ++i)
dist[i] = Integer.MAX_VALUE;
dist[src] = 0;
for (inti = 1; i < V; ++i) {
for (intj = 0; j < E; ++j) {
intu = graph.edge[j].src;
intv = graph.edge[j].dest;
intweight = graph.edge[j].weight;
if (dist[u] != Integer.MAX_VALUE && dist[u] + weight < dist[v])
dist[v] = dist[u] + weight;
}
}
for (intj = 0; j < E; ++j) {
intu = graph.edge[j].src;
intv = graph.edge[j].dest;
intweight = graph.edge[j].weight;
if (dist[u] != Integer.MAX_VALUE && dist[u] + weight < dist[v]) {
System.out.println("Graph contains negative weight cycle");
return;
}
}
printArr(dist, V);
}
voidprintArr(intdist[], intV)
{
System.out.println("Vertex Distance from Source");
for (inti = 0; i < V; ++i)
System.out.println(i + "\t\t" + dist[i]);
}
publicstaticvoidmain(String[] args)
{
intV = 5; // Number of vertices in graph
intE = 8; // Number of edges in graph
Graphgraph = newGraph(V, E);
graph.edge[0].src = 0;
graph.edge[0].dest = 1;
graph.edge[0].weight = -1;
graph.edge[1].src = 0;
graph.edge[1].dest = 2;
graph.edge[1].weight = 4;
graph.edge[2].src = 1;
graph.edge[2].dest = 2;
graph.edge[2].weight = 3;
graph.edge[3].src = 1;
graph.edge[3].dest = 3;
graph.edge[3].weight = 2;
graph.edge[4].src = 1;
graph.edge[4].dest = 4;
graph.edge[4].weight = 2;
graph.edge[5].src = 3;
graph.edge[5].dest = 2;
graph.edge[5].weight = 5;
graph.edge[6].src = 3;
graph.edge[6].dest = 1;
graph.edge[6].weight = 1;
graph.edge[7].src = 4;
graph.edge[7].dest = 3;
graph.edge[7].weight = -3;
graph.BellmanFord(graph, 0);
}
}