
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.lang.Math;

class heap
{

public static void main(String args[])
	{
	int v,e,comments;
		v=500;
		e=120000;
		comments=0;
		if(args.length>=3)
		{
			v=Integer.parseInt(args[0]);
			e=Integer.parseInt(args[1]);
			comments=Integer.parseInt(args[2]);
		}
		int maxi=30;

		int[] list=new int[maxi];
		Object[] llist=new BHNode[maxi];
		
		int i;
		Random r=new Random();
		for(i=0;i<maxi;i++)
		{
			list[i]=500+r.nextInt(9999);
		}
		BinomialHeap bh=new BinomialHeap();
		
		for(i=0;i<maxi;i++)
		{   
			bh.insert(i,new Node(list[i]));
		}
		
		Arrays.sort(list,0,maxi);
		Node n;		

		for(i=0;i<30;i++)
		{
			System.out.println("Next element is : " + list[i]);
			n=bh.deleteMin();
			System.out.println("deleteMin element is : "  + n.returnkey());
					bh.display(bh.head,0);
		}
		
	System.out.println("\nGenerating Graph");
	createGraphM(v,e);
	System.out.println("Graph Generated having "+ v + " vertices , "+ e + " edges.");
	
	try{
	new Thread().sleep(5000);
	}
	catch(Exception exc)
	{}
	
	boolean comm=false;
	if(comments>0)
		comm=true;
		
		long t; 
		System.out.println("\nRunning Prim's Algorithm using Binary Heap");
		t=prims(1,comm);
		
		System.out.println("t/(n.n.log(n)) : " + (double)(t)/(v*v*Math.log(v)));
			try{
	new Thread().sleep(5000);
	}
	catch(Exception exc)
	{}
		System.out.println("\nRunning Prim's Algorithm using Fibonacci Heap");
		t=prims(2,comm);
		System.out.println("t/(n.n) : " + (double)(t)/(v*v));
		System.out.println("t/(n.log(n)) : " + (double)(t)/(v*Math.log((double)v)));
		
	}

}
