-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrouter.cc
More file actions
38 lines (35 loc) · 870 Bytes
/
router.cc
File metadata and controls
38 lines (35 loc) · 870 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <cassert>
#include "instance.h"
#include "emst.h"
#include "abstract_formula.h"
#include "solver.h"
void usage(int exit_code) {
std::cout << "Usage: router.exe <file-name>" << std::endl;
std::exit(exit_code);
}
int main(int argc, char **argv) {
if(argc != 2) {
usage(1);
}
std::string file_name(argv[1]);
std::ifstream ifs(file_name);
if(!ifs.good()) {
std::cout << "Cannot open file " << file_name << std::endl;
usage(2);
}
auto ins = from_stream(ifs);
compute_emst_subnets(ins);
auto f = abstract_formula::from_instance(ins);
int var_count = -1;
auto sf = f.sat_formula(var_count);
auto sol = solve_formula(ins, f, sf, var_count);
if(!sol.empty()) {
f.print_plottable(std::cout, ins, sol);
}
else {
std::cout << "UNSAT" << std::endl;
}
}