package com.interview.basics.model.graph;
import java.util.HashSet;
import java.util.Set;
public class Graph {
public boolean ordered;
public int V;
public Set<Integer>[] adj;
@SuppressWarnings("unchecked")
public Graph(int size, boolean ordered){
this.V = size;
this.ordered = ordered;
adj = (Set<Integer>[]) new Set[V];
}
public void addDirectEdge(int v, int w){
if(adj[v] == null){
adj[v] = new HashSet<Integer>();
}
adj[v].add(w);
}
public void addEdge(int v, int w){
addDirectEdge(v, w);
if(!ordered)
addDirectEdge(w, v);
}
public Iterable<Integer> adj(int v){
return adj[v];
}
public void print(){
for(int i = 0; i < V; i++){
System.out.print(i + "\t");
if(adj(i) != null){
for(int j : adj(i)){
System.out.print(j + " ");
}
}
System.out.println();
}
}
}