]> git.llucax.com Git - z.facultad/75.29/susanita.git/blob - src/main.cpp
Hacer que todos_h_comprometidos() sea O(1).
[z.facultad/75.29/susanita.git] / src / main.cpp
1 #include "backtracking.h"
2 #include "galeshapley.h"
3 #include "parser.h"
4 #include "timer.h"
5 #include <iostream>
6
7 int
8 main(int argc, char* argv[])
9 {
10         Susanita* susanita = 0;
11         switch (argc)
12         {
13                 case 2: //Gale-Sharpley por default
14                         // N * 2 para asegurar que el hash este ocupado al 50% y sea O(1)
15                         susanita = new GaleShapley(Parser::get_n(argv[1]) * 2);
16                         break;
17                 case 3: // BackTracking se especifica con tercer parámetro "-bt"
18                         if (strcmp(argv[2], "-bt"))
19                         {
20                                 std::cerr << "Uso: " << argv[0] << " archivo_entrada [-bt]\n";
21                                 return 1;
22                         }
23                         // N * 2 para asegurar que el hash este ocupado al 50% y sea O(1)
24                         susanita = new BackTracking (Parser::get_n(argv[1]) * 2);
25                         break;
26                 default:
27                         std::cerr << "Uso: " << argv[0] << " archivo_entrada [-bt]\n";
28                         return 2;
29         }
30
31         // N * 2 para asegurar que el hash este ocupado al 50% y sea O(1)
32         Parser p(*susanita);
33
34         if (!p.input(argv[1]))
35         {
36                 std::cerr << "Error al abrir el archivo '" << argv[1] << "'\n";
37                 delete susanita;
38                 return 3;
39         }
40         timer t;
41         susanita->casamentear();
42         std::cerr << t << "\n";
43         p.output();
44
45         // Todo OK
46         delete susanita;
47         return 0;
48
49 }
50