FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
Java/DataStructures/Graphs/PrimMST.java at master · null-exception/Java · GitHub
null-exception
/
Java
Public
forked from
TheAlgorithms/Java
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
Java
/
DataStructures
/
Graphs
/
PrimMST.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
108 lines (90 loc) · 3.39 KB
Breadcrumbs
Java
/
DataStructures
/
Graphs
/
PrimMST.java
Copy path
File metadata and controls
108 lines (90 loc) · 3.39 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
package
DataStructures
.
Graphs
;
import
java
.
lang
.*;
/**
* A Java program for Prim's Minimum Spanning Tree (MST) algorithm.
* adjacency matrix representation of the graph
*/
class
PrimMST
{
// Number of vertices in the graph
private
static
final
int
V
=
5
;
// A utility function to find the vertex with minimum key
// value, from the set of vertices not yet included in MST
int
minKey
(
int
key
[],
Boolean
mstSet
[]) {
// Initialize min value
int
min
=
Integer
.
MAX_VALUE
,
min_index
= -
1
;
for
(
int
v
=
0
;
v
<
V
;
v
++)
if
(
mstSet
[
v
] ==
false
&&
key
[
v
] <
min
) {
min
=
key
[
v
];
min_index
=
v
;
}
return
min_index
;
}
// A utility function to print the constructed MST stored in
// parent[]
void
printMST
(
int
parent
[],
int
n
,
int
graph
[][]) {
System
.
out
.
println
(
"Edge Weight"
);
for
(
int
i
=
1
;
i
<
V
;
i
++)
System
.
out
.
println
(
parent
[
i
] +
" - "
+
i
+
" "
+
graph
[
i
][
parent
[
i
]]);
}
// Function to construct and print MST for a graph represented
// using adjacency matrix representation
void
primMST
(
int
graph
[][]) {
// Array to store constructed MST
int
parent
[] =
new
int
[
V
];
// Key values used to pick minimum weight edge in cut
int
key
[] =
new
int
[
V
];
// To represent set of vertices not yet included in MST
Boolean
mstSet
[] =
new
Boolean
[
V
];
// Initialize all keys as INFINITE
for
(
int
i
=
0
;
i
<
V
;
i
++) {
key
[
i
] =
Integer
.
MAX_VALUE
;
mstSet
[
i
] =
false
;
}
// Always include first 1st vertex in MST.
key
[
0
] =
0
;
// Make key 0 so that this vertex is
// picked as first vertex
parent
[
0
] = -
1
;
// First node is always root of MST
// The MST will have V vertices
for
(
int
count
=
0
;
count
<
V
-
1
;
count
++) {
// Pick thd minimum key vertex from the set of vertices
// not yet included in MST
int
u
=
minKey
(
key
,
mstSet
);
// Add the picked vertex to the MST Set
mstSet
[
u
] =
true
;
// Update key value and parent index of the adjacent
// vertices of the picked vertex. Consider only those
// vertices which are not yet included in MST
for
(
int
v
=
0
;
v
<
V
;
v
++)
// graph[u][v] is non zero only for adjacent vertices of m
// mstSet[v] is false for vertices not yet included in MST
// Update the key only if graph[u][v] is smaller than key[v]
if
(
graph
[
u
][
v
] !=
0
&&
mstSet
[
v
] ==
false
&&
graph
[
u
][
v
] <
key
[
v
]) {
parent
[
v
] =
u
;
key
[
v
] =
graph
[
u
][
v
];
}
}
// print the constructed MST
printMST
(
parent
,
V
,
graph
);
}
public
static
void
main
(
String
[]
args
) {
/* Let us create the following graph
2 3
(0)--(1)--(2)
| / \ |
6| 8/ \5 |7
| / \ |
(3)-------(4)
9 */
PrimMST
t
=
new
PrimMST
();
int
graph
[][] =
new
int
[][]{{
0
,
2
,
0
,
6
,
0
},
{
2
,
0
,
3
,
8
,
5
},
{
0
,
3
,
0
,
0
,
7
},
{
6
,
8
,
0
,
0
,
9
},
{
0
,
5
,
7
,
9
,
0
},
};
// Print the solution
t
.
primMST
(
graph
);
}
}
Back
|
FazBrowse Home
|
New Git URL