import [Link].
*;
import [Link].*;
import [Link];
// This class represents an undirected graph using adjacency list
// representation
class Graph
{
private int V; // No. of vertices
private LinkedList<Integer> adj[] = new LinkedList[v];
int time = 0;
static final int NIL = -1;
{
V = v;
int i = 0;
while (i < v) {
adj[i] = new LinkedList();
++i;
}
}
void addEdge(int v, int w)
{
adj[v].add(w); // Add w to v's list.
adj[w].add(v); //Add v to w's list
}
// A recursive function using DFS
// u --> The vertex visited next
// visited[] --> keeps tract of vertices
// disc[] --> Stores discovery times of vertices
// parent[] --> Stores parent vertices
// ap[] --> Store articulation points
void APUtil(int u, boolean visited[], int disc[],
int low[], int parent[], boolean ap[])
{
public static int Closestdistance(ArrayList<ArrayList<Integer>>adj, int s,
int dest, int v){
int predicate[]= new int[v];
int distance[]= new int[v];
if (BFS(adj,s,destination,v,predicate,distance)==false){
[Link]("Starting point and array are not connected");
return -1;
}
LinkedList<Integer>path=new LinkedList<Integer>();
int crawl=destination;
[Link](crawl);
while(predicate[crawl]!=-1){
[Link](predicate[crawl]);
crawl=predicate[crawl];
}
//[Link](" Moves "+distance[destination]); //
return distance[destination];
/*[Link]("Path : ");
for(int i=[Link]()-1; i>=0;i--){
[Link]([Link](i)+" ");
}*/
public static boolean BFS(ArrayList<ArrayList<Integer>>adj, int src, int
destination, int v, int predicate[], int distance[]){
LinkedList<Integer>queue= new LinkedList<Integer>();
boolean visited[]=new boolean[v];
for(int i=0;i<v;i++){
visited[i]=false;
distance[i]=[Link];
predicate[i]=-1;
}
visited[src]=true;
distance[src]=0;
[Link](src);
while(![Link]()){
int u=[Link]();
for(int i=0;i<[Link](u).size();i++){
if(visited[[Link](u).get(i)]==false){
visited[[Link](u).get(i)]=true;
distance[[Link](u).get(i)]=dist[u]+1;
predicate[[Link](u).get(i)]=u;
[Link]([Link](u).get(i));
if([Link](u).get(i)==dest)
return true;
}
}
}return false;
}
public static void main(String args[])
{
Scanner keyword= new Scanner([Link]);
[Link]("Enter number of vertices, v: ");
int v=[Link]();
[Link]("Enter number of connections,edge: ");
int e=[Link]();
ArrayList<ArrayList<Integer>>adj= new ArrayList<ArrayList<Integer>>(v);
for(int i=0;i<e;i++){
[Link](new ArrayList<Integer>());
addEdge(adj,0,7);
addEdge(adj,0,8);
addEdge(adj,0,6);
addEdge(adj,1,2);
addEdge(adj,1,5);
addEdge(adj,2,0);
addEdge(adj,2,5);
addEdge(adj,3,4);
addEdge(adj,4,2);
addEdge(adj,3,1);
[Link]("Enter Noras position: ");
int norasposition=[Link]();
}