public class Graph{ private final int V; private int E; private Bag<Integer>[] adj; public Graph(int V){ this.V=V;thisE=0; adj=(Bag<Integer>[])new Bag[V]; for(int v=0;v<V;v++) adj[v]=new Bag<Integer>(); } public int V(){return V;} public int E(){return E;} public void addEdge(int v,int w){ adj[v].add(w); adj[w].add(v); E++; }
int v(); int E(); public String toString(); public Graph(int v); public static int degree(Graph G,int v){ int degree=0; for(int W:G.adj(v))degree++; return degree; } public static int maxDegree(Graph G){ int max=0; for(int v=0;v<G.V();v++) if(degree(G,v)>max) max=degree(G,v); return max; } public static int numberOfSelfLoops(Graph G){ int count=0; for(int v=0;v<G.V();v++) for(int w:G.adj(v)) if(v==w)count++; return count/2; } public String toString(){ String } }