import java.util.*;

public class Lab11 extends JPFalt {

    /** 
     * Create a test suite 
     */
    public static void main(String[] args) {
	new Lab11();
    }
    
    /**
     * Class constructor
     */
    public Lab11() {
    }
    
    void testGraph()
    {
	Vertex v1 = new Vertex(10);
	Vertex v2 = new Vertex(20);
	Vertex v3 = new Vertex(30);
	Vertex v4 = new Vertex(40);
	Vertex v5 = new Vertex(50);
	Vertex v6 = new Vertex(60);

	java.util.LinkedList ll = new java.util.LinkedList();

	ll.add(v1);
	ll.add(v2);
	ll.add(v3);
	ll.add(v4);
	ll.add(v5);
	ll.add(v6);

	Graph g = new Graph (ll);

	g.mkEdge(v1,v2);
	g.mkEdge(v1,v3);
	g.mkEdge(v2,v3);
	g.mkEdge(v2,v4);
	g.mkEdge(v2,v5);
	g.mkEdge(v3,v6);
	g.mkEdge(v4,v1);
	g.mkEdge(v5,v3);
	g.mkEdge(v5,v4);
	g.mkEdge(v6,v5);
    }   



    public class Graph {
	java.util.List vertices;

	Graph(java.util.List vs) {
	    this.vertices = vs;
	}

	public void mkEdge(Vertex v1, Vertex v2)
	{
	    Edge e = new Edge(v1, v2);
	    v1.addEdge(e);
	}

	/** Breadth first search
	    non-recursive
	*/

	public boolean bfs(int value)
	{
	    // TODO:  Fill this in.
	    return true;
	}


	/** Depth first search
	    recursive
	*/

	public boolean dfs(int value)
	{
	    // TODO:  Fill this in.
	    return true;
	}


	/** Depth first search 
	    nonrecursive
	*/
	public boolean dfs2(int value)
	{
	    // TODO:  Fill this in.
	    return true;
	}

    }

    public class Edge {
	Vertex src;
	Vertex dst;

	Edge(Vertex src, Vertex dst) {
	    this.src = src;
	    this.dst = dst;
	}
    }

    public class Vertex {
	int mark;

	int value;

	java.util.List edges;

	Vertex(int value) {
	    this.edges = new java.util.LinkedList();
	    this.mark = 0;
	    this.value = value;
	}

	public void addEdge(Edge e) {
	    this.edges.add(e);
	}
    }
}

