iterator_t* iterator_init(uint8_t num_threads, uint8_t shard, uint8_t num_shards) { uint64_t num_addrs = blacklist_count_allowed(); iterator_t *it = xmalloc(sizeof(struct iterator)); const cyclic_group_t *group = get_group(num_addrs); if (num_addrs > (1LL << 32)) { zsend.max_index = 0xFFFFFFFF; } else { zsend.max_index = (uint32_t) num_addrs; } it->cycle = make_cycle(group, zconf.aes); it->num_threads = num_threads; it->curr_threads = num_threads; it->thread_shards = xcalloc(num_threads, sizeof(shard_t)); it->complete = xcalloc(it->num_threads, sizeof(uint8_t)); pthread_mutex_init(&it->mutex, NULL); for (uint8_t i = 0; i < num_threads; ++i) { shard_init(&it->thread_shards[i], shard, num_shards, i, num_threads, &it->cycle, shard_complete, it ); } zconf.generator = it->cycle.generator; return it; }
bool step_cycle() { prepare(); make_cycle(); try { build.build(Range(nodes)); return false; } catch(CatchType) { return true; } }
int main(int argc, char** argv){ //int main(){ int i; if(argc < 3) {printf("wrong input of arguments!\n format: input_file output_file\n"); return 2;} freopen(argv[2], "w", stdout); int n = get_length(argv[1]); //int n = get_length("input.txt"); int **M = (int**)malloc(n*sizeof(int*)); int **D = (int**)malloc(n*sizeof(int*)); int **save = (int**)malloc(n*sizeof(int*)); for(i = 0; i < n; i++){ M[i] = (int*)malloc(n*sizeof(int)); D[i] = (int*)malloc(n*sizeof(int)); save[i] = (int*)malloc(n*sizeof(int)); } int* R = (int*)malloc(n*sizeof(int)); int* S = (int*)malloc(n*sizeof(int)); input_(argv[1], save, n); //input_("input.txt", save, n); int al = check_data(save, n); //output_(1,save,n); if(al == 1) {printf("wrong data input\n"); free_all(save, M, D, R, S, n); return 2;} int H[1]; //get_data_from_within(save, "output.txt"); int cur_pos[1]; int record[1]; record[0] = get_first_record(save, M, D, R, S, n, cur_pos, H); if(record[0] == -1) { return 1; } backtracking(save, M, D, R, S, n, record, H); //printf("Got here!\n"); printf("%d\n", H[0] + V[record[0]].L); make_cycle(record[0]); free_all(save, M, D, R, S, n); return 0; }