import fi.uef.cs.tra.DiGraph;
import fi.uef.cs.tra.Edge;
import fi.uef.cs.tra.Graph;
import fi.uef.cs.tra.Vertex;

import java.util.HashSet;
import java.util.Set;


public class TRAII_25_t15_skeleton {

    public static void main(String[] args) {

        // defaults
        int vertices = 6;
        int edges = 13;
        int maxDistance = 10;

        if (args.length > 0)
            vertices = Integer.parseInt(args[0]);

        if (args.length > 1)
            edges = Integer.parseInt(args[1]);

        // random seed
        int rseed = vertices+edges;

        if (args.length > 2)
            rseed = Integer.parseInt(args[2]);

        // maxDistance 
        if (args.length > 3)
            maxDistance = Integer.parseInt(args[3]);

        DiGraph graph = GraphMaker.createDiGraph(vertices, edges, rseed);
        GraphMaker.setWeights(graph, 10, (float)0.1, rseed);

        if (vertices < 20)
            System.out.println(GraphMaker.toString(graph, 1));

        // search near from every vertex
        System.out.println("\nNear vertices (max " + maxDistance + ")");
        for (Vertex v : graph.vertices()) {
            System.out.println("From " + v + " : " +
                               nearVertices(graph, v, maxDistance));
        }

    }   // main() 


    /**
     * All the vertices that are at most distance k from vertex v.
     * @param g input graph
     * @param v source vertex
     * @param k maximum distance
     * @return set of nearby vertices
     */
    static Set<Vertex> nearVertices(DiGraph g, Vertex v, float k) {

        Set<Vertex> result = new HashSet<>();

        // TODO

        return result;
    }


}
