Mother vertex
import java.util.*;
public class MotherVertex {
public static void addEdge(int u, int v, ArrayList<ArrayList<Integer>> adj) {
adj.get(u).add(v);
}
public static void DFS(ArrayList<ArrayList<Integer>> g, int v, boolean vis[]) {
vis[v] = true;
for (int x : g.get(v)) {
if (!vis[x]) {
DFS(g, x, vis);
}
}
}
public static int FindMotherVertex(ArrayList<ArrayList<Integer>> adj, int V) {
boolean vis[] = new boolean[V];
int v = -1;
for (int i = 0; i < V; i++) {
if (!vis[i]) {
DFS(adj, i, vis);
v = i;
}
}
boolean check[] = new boolean[V];
DFS(adj, v, check);
for (boolean val : check) {
if (!val) {
return -1;
}
}
return v;
}
public static void main(String[] args) {
int V = 7;
int E = 8;
ArrayList<ArrayList<Integer>> adj = new ArrayList<>();
for (int i = 0; i < V; i++) {
adj.add(new ArrayList<>());
}
addEdge(0, 1, adj);
addEdge(0, 2, adj);
addEdge(1, 3, adj);
addEdge(4, 1, adj);
addEdge(6, 4, adj);
addEdge(5, 6, adj);
addEdge(5, 2, adj);
addEdge(6, 0, adj);
System.out.println("The Mother Vertex of the Graph: " + FindMotherVertex(adj, V));
}
}
Comments
Post a Comment