Esempio n. 1
0
int main()
 {
	ofstream outfile("output.txt");
	if(!outfile)
	{
		cout << "File generation failed";
	}
	else
	{
		Heap *heap = new Heap;
		Set *set = new Set;
		heap->size = 0;
		ReadIn(heap);
		cout <<"\n";
		initializeSet(heap->nV, set);
		Kruskal(heap->nV, set, heap->nE, heap,outfile);

	}
	outfile.close();
}
Esempio n. 2
0
int main()
{
    int i;
    while (~scanf("%d %d", &N, &M))
    {
        for (i=1; i<=N; ++i)    // Init
            hub[i] = i;
        
        for (i=0; i<M; ++i)
            scanf("%d %d %d", &edge[i].u, &edge[i].v, &edge[i].w);
        
        qsort(edge, M, sizeof(edge[0]), compare);
        
        //printf("-----------------------\n");
        //for (i=0; i<M; ++i) printf("%d %d %d\n", edge[i].u, edge[i].v, edge[i].w);
        
        Kruskal();
    }// End of while
    
    return 0;
}
Esempio n. 3
0
int main(int argc, char* argv[])
{
    int i,j,t;
    char s[10];
    while(scanf("%d",&n),n)
    {
        maxlinks=0;
        for(i=1;i<n;i++)
        {
            scanf("%s%d",s,&j);
            while(j--)
            {
                scanf("%s%d",s,&links[maxlinks].length);
                links[maxlinks].point1=i;
                links[maxlinks].point2=*s-64;
                maxlinks++;
            }
        }
        printf("%d\n",Kruskal());
    }
    return 0;
}
Esempio n. 4
0
int main()
{
    int i, a, b, c, tag;
    while (~scanf("%d", &NCity), NCity!=0)
    {
        for (i=0; i<=NCity; ++i)
            city[i] = i;
        
        M = NCity*(NCity-1)/2;
        for (i=0; i<M; ++i)
        {
            scanf("%d %d %d %d", &a, &b, &c, &tag);
            if (tag == 0)
                edge[i].u=a, edge[i].v=b, edge[i].w=c;
            else
                edge[i].u=a, edge[i].v=b, edge[i].w=0;
        }// preprocess
        
        qsort(edge, M, sizeof(edge[0]), compare);
        printf("%d\n", Kruskal());
    }// End of while
    
    return 0;
}
Esempio n. 5
0
int main(int argc, char **argv){
  if(argc != 3){
    usage(argv[0]);
    exit(EXIT_FAILURE);
  }
  
  std::ifstream fin;
  fin.open(argv[1]);
  if(!fin.good()){
    std::cerr << argv[0] << ": ";
    perror(argv[1]);
    exit(EXIT_FAILURE);
  }
  
  std::ofstream fout;
  fout.open(argv[2]);
  if(!fout.good()){
    std::cerr << argv[0] << ": ";
    perror(argv[2]);
    exit(EXIT_FAILURE);
  }
 
  /*** parse file and create graph ***/
  int nGraphs, nVertices, nEdges;//, v1, v2 , weight;
  fin >> nGraphs;
  fout << "There are " << nGraphs << " graphs in " << argv[1] << std::endl;
  for(int i = 0; i < nGraphs; i++){
    // build graph
    fin >> nVertices;
    fin >> nEdges;
    Graph graph(nVertices);
    for(int e = 0; e < nEdges; e++){
      Edge edge;
      fin >> edge;
      if(DEBUG) std::cerr << "received edge: " << edge << std::endl;
      graph.insertEdge(edge);  
    }
    
    if(DEBUG){
      std::cerr << graph.numVertices() << " vertices, " << graph.numEdges() << " edges" << std::endl;
      graph.showEdges();
      graph.showAdj(false);
    }
    
    // run algorithms and time
    Graph kruskal_mst(nVertices);
    Timer kruskal_timer;
    kruskal_timer.start();
    Kruskal(graph, kruskal_mst);
    kruskal_timer.end();
    
    
    Graph prim_mst(nVertices);
    Timer prim_timer;
    prim_timer.start();
    Prim(graph, prim_mst);
    prim_timer.end();
    
    Graph fib_mst(nVertices);
    Timer fib_timer;
    fib_timer.start();
    Fib(graph, fib_mst);
    fib_timer.end();
    
    // report timings
    fout << "Graph " << i+1 << ": " << nVertices << " vertices, " << nEdges << " edges" << std::endl;
    
    fout << "Kruskal: ";
    kruskal_timer.printElapsedSeconds(fout);
    if(DEBUG){
      std::cerr << "Kruskal MST:" << std::endl;
      kruskal_mst.showEdges();
      kruskal_mst.printEdges(fout);
      fout << "\tKRUSKALS: SUM OF EDGES = " << kruskal_mst.sumEdges() << std::endl;// " numEdges=" << kruskal_mst.numEdges() << std::endl;
    }

    fout << "Prim: ";
    prim_timer.printElapsedSeconds(fout);
    extractMST(prim_mst);
    if(DEBUG){
      std::cerr << "Prim MST:" << std::endl;
      prim_mst.showEdges();
      prim_mst.printEdges(fout);  
      fout << "\tPRIMS: SUM OF EDGES = " << prim_mst.sumEdges() << std::endl;//" numEdges=" << prim_mst.numEdges() << std::endl;
    }
    
    fout << "Fib Heap: ";
    fib_timer.printElapsedSeconds(fout);
    extractMST(fib_mst);
    if(DEBUG){
      std::cerr << "Fib MST:" << std::endl;
      fib_mst.showEdges();
      fib_mst.printEdges(fout);	      
      fout << "\tFIB-HEAP: SUM OF EDGES = " << fib_mst.sumEdges() << std::endl;// << " numEdges=" << fib_mst.numEdges() << std::endl;
    }

  }
  
  return 0;
}
Esempio n. 6
0
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "nodo.h"
#include "dijkstra.h"
#include "floyd.h"
#include "kruskal.h"
#include "QComboBox"
#include "QLabel"
#include "QString"

QLabel * label;
Dijkstra dijkstra = Dijkstra();
Floyd floyd = Floyd();
Kruskal kruskal = Kruskal();

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowTitle("Map Path Simulator");
    ui->mapa->setPixmap(QPixmap(":/Images/mapa.png"));
    layout = new QVBoxLayout(this);
    //for(int i = 0; i < 54; i++)
    //{
        //label = new QLabel("hola");
        //QString hola;
        //hola.append("hola");
        //label->setText(hola);
        //layout->addWidget(label);
    //}