int main() { init_labels(); init_sign_buffer(&sgn); init_congruence_table(&tbl, 1); build_composites(); print_labels(); print_composites(12); printf("\n"); test_signatures(12); printf("\n"); test_equalities(12); printf("\n"); test_disjunctions(12); printf("\n"); test_congruences(12); delete_composites(12); delete_congruence_table(&tbl); delete_sign_buffer(&sgn); return 0; }
int hungarian() { int ret = 0; //weight of the optimal matching max_match = 0; //number of vertices in current matching memset(xy, -1, sizeof(xy)); memset(yx, -1, sizeof(yx)); init_labels(); //step 0 augment(); //steps 1-3 for (int x = 0; x < n; x++) //forming answer there ret += cost[x][xy[x]]; return ret; }
/// Computes the best matching of two sets given its cost matrix. /// See the matching() method to get the computed match result. /// \param cost a matrix of two sets I,J where cost[i][j] is the weight of edge i->j /// \param logicalSize the number of elements in both I and J /// \returns the total cost of the best matching inline double operator()(const double cost[N][N], int logicalSize) { n = logicalSize; assert(n <= N); double ret = 0; //weight of the optimal matching max_match = 0; //number of vertices in current matching memset(xy, -1, sizeof(xy)); memset(yx, -1, sizeof(yx)); init_labels(cost); //step 0 augment(cost); //steps 1-3 for (int x = 0; x < n; x++) //forming answer there ret += cost[x][xy[x]]; return ret; }
void init_all(int argc, char **argv) { cpu_info(); char *config = 0, *bpx = 0, *labels = 0; char opt; while ((opt = getopt(argc, argv, "i:l:b:")) != EOF) switch (opt) { case 'i': config = optarg; break; case 'b': bpx = optarg; break; case 'l': labels = optarg; } temp.Minimized = false; init_z80tables(); init_ie_help(); load_config(config); //make_samples(); #ifdef MOD_GS init_gs(); #endif init_leds(); init_tape(); init_hdd_cd(); start_dx(); init_debug(); applyconfig(); main_reset(); autoload(); init_bpx(bpx); init_labels(labels); temp.Gdiplus = GdiplusStartup(); if (!temp.Gdiplus) { color(CONSCLR_WARNING); printf("warning: gdiplus.dll was not loaded, only SCR and BMP screenshots available\n"); } if (comp.ts.vdac2) { if (!vdac2::open_ft8xx()) { color(CONSCLR_WARNING); printf("warning: ft8xx library was not loaded\n"); comp.ts.vdac2 = false; } } load_errors = 0; trd_toload = 0; *(DWORD*)trd_loaded = 0; // clear loaded flags, don't see autoload'ed images for (; optind < argc; optind++) { char fname[0x200], *temp; GetFullPathName(argv[optind], sizeof fname, fname, &temp); trd_toload = DefaultDrive; // auto-select if (!loadsnap(fname)) errmsg("error loading <%s>", argv[optind]), load_errors = 1; } if (load_errors) { int code = MessageBox(wnd, "Some files, specified in\r\ncommand line, failed to load\r\n\r\nContinue emulation?", "File loading error", MB_YESNO | MB_ICONWARNING); if (code != IDYES) exit(); } SetCurrentDirectory(conf.workdir); // timeBeginPeriod(1); InitializeCriticalSection(&tsu_toggle_cr); }
tipo hungarian(){ tipo ret = 0; max_match = 0, memset(xy, -1, sizeof(xy)); memset(yx, -1, sizeof(yx)), init_labels(), augment(); //steps 1-3 forn (x,n) ret += cost[x][xy[x]]; return ret; }