class SingletonEdgeGraph extends GraphGeneratorBase<LongValue, NullValue, NullValue> {

	@Override
	public Graph<LongValue, NullValue, NullValue> generate() {
		Preconditions.checkState(vertexPairCount > 0);

		// Vertices
		long vertexCount = 2 * vertexPairCount;

		DataSet<Vertex<LongValue, NullValue>> vertices = GraphGeneratorUtils.vertexSequence(env, parallelism, vertexCount);

		// Edges
		LongValueSequenceIterator iterator = new LongValueSequenceIterator(0, vertexCount - 1);

		DataSet<Edge<LongValue, NullValue>> edges = env
			.fromParallelCollection(iterator, LongValue.class)
				.setParallelism(parallelism)
				.name("Edge iterators")
			.map(new LinkVertexToSingletonNeighbor())
				.setParallelism(parallelism)
				.name("Complete graph edges");

		// Graph
		return Graph.fromDataSet(vertices, edges, env);
	}

	public  SingletonEdgeGraph(ExecutionEnvironment env, long vertexPairCount);

}