int main()
{
  int p, q, i, id[N], p_id, q_id, size_arr[N];
  // initialize ids and size
  for (i = 0; i < N; i++)
  {
	  id[i] = i;
	  size_arr[i] = 1;
  }

  // read pairs and keep/update connected components information
  printf("Enter pairs p q: \n");
  while (scanf("%d %d", &p, &q) == 2)
  {
    p_id = find(p, id);
    q_id = find(q, id);
    

    if (p_id == q_id)
    {
      printf(" %d and %d were on the same set\n", p, q);
	  print_array_int(id, N);
      continue;
    }

    set_union(p_id, q_id, id, N, size_arr,p,q);   // sending two extra values.. 
    printf(" %d %d link led to set union\n", p, q);
    
    print_array_int(id, N);
    print_array_int(size_arr, N);
  }
  return 0;
}
コード例 #2
0
ファイル: op_datatypes.c プロジェクト: kynan/op2-c-reference
void dump_sparsity ( op_sparsity const * sparsity, char const * filename ) {
  FILE *f = fopen(filename, "w");
  fprintf(f,"%zu %zu %zu\n\n", sparsity->nrows, sparsity->ncols, sparsity->max_nonzeros);
  print_array_int(f, sparsity->nnz, sparsity->nrows);
  print_array_int(f, sparsity->rowptr, sparsity->nrows + 1);
  print_array_int(f, sparsity->colidx, sparsity->rowptr[sparsity->nrows]);
  fclose(f);
}
コード例 #3
0
ファイル: ads29.c プロジェクト: jleffler/soq
int main(void)
{
    int ex1[] = { 1, 43, 23, 55 };
    int ex2[] = { 12, 33, 1, 19, 44, 11, 76, 27, 13 };
    enum { NUM_EX1 = sizeof(ex1) / sizeof(ex1[0]) };
    enum { NUM_EX2 = sizeof(ex2) / sizeof(ex2[0]) };
    int ex3[max(DIM(ex1), DIM(ex2))];
    size_t num3;

    memmove(ex3, ex1, sizeof(ex1));
    num3 = NUM_EX1;
    print_array_int("Example 1 qsort - before", num3, ex3);
    qsort(ex3, num3, sizeof(ex3[0]), cmp_numbers);
    print_array_int("Example 1 qsort - after", num3, ex3);

    memmove(ex3, ex2, sizeof(ex2));
    num3 = NUM_EX2;
    print_array_int("Example 2 qsort - before", num3, ex3);
    qsort(ex3, num3, sizeof(ex3[0]), cmp_numbers);
    print_array_int("Example 2 qsort - after", num3, ex3);

    memmove(ex3, ex1, sizeof(ex1));
    num3 = NUM_EX1;
    print_array_int("Example 1 stable partition - before", num3, ex3);
    merge_sort(ex3, num3, sizeof(ex3[0]), cmp_numbers);
    print_array_int("Example 1 stable partition - after", num3, ex3);

    memmove(ex3, ex2, sizeof(ex2));
    num3 = NUM_EX2;
    print_array_int("Example 2 stable partition - before", num3, ex3);
    merge_sort(ex3, num3, sizeof(ex3[0]), cmp_numbers);
    print_array_int("Example 2 stable partition - after", num3, ex3);

    return 0;
}
コード例 #4
0
void counting_sort(int *faltas, char **alunos, int n, int k){
	int *count = (int *)malloc(k*sizeof(int));
	int *first_idx = (int *)malloc(k*sizeof(int));
	int *out_idx = (int *)malloc(n*sizeof(int));
	int i, total;
		
	for(i = 0; i < k; ++i){
		count[i] = 0;
	}
	printf("count = "); print_array_int(count, k);
	
	for(i = 0; i < n; ++i){
		++count[faltas[i]];
	}
	printf("count = "); print_array_int(count, k);
	
	total = 0;
	for(i = 0; i < k; ++i){
		first_idx[i] = total;
		total += count[i];
	}
	printf("first_idx = "); print_array_int(first_idx, k);
	
	for(i = 0; i < n; ++i){
		out_idx[first_idx[faltas[i]]] = i;
		first_idx[faltas[i]] = first_idx[faltas[i]] + 1;
	}
	printf("out_idx = "); print_array_int(out_idx, n);
	
	for(i = 0; i < n; ++i){
		printf("{%d, %s} ", faltas[out_idx[i]], alunos[out_idx[i]]);
	}
	printf("\n");
	
	free(count);
	free(first_idx);
	free(out_idx);
}
コード例 #5
0
void simple_counting_sort(int *faltas, char **alunos, int n, int k){
	int *count = (int *)malloc(k*sizeof(int));
	int i, j;
	
	for(i = 0; i < k; ++i){
		count[i] = 0;
	}
	printf("count = "); print_array_int(count, k);
	
	for(i = 0; i < n; ++i){
		++count[faltas[i]];
	}
	printf("count = "); print_array_int(count, k);
	
	for(i = 0; i < k; ++i){
		for(j = 0; j < count[i]; ++j){
			printf("{%d, -} ", i);
		}
	}
	printf("\n");
	
	free(count);
}
コード例 #6
0
ファイル: arr.c プロジェクト: abhishek-kumar-7391/docs
static void 
print_array(void *arr, int size, int start_at, int end_at, char delim, uint8_t type)
{
	int *arr_int;
	char *arr_char;

	switch(type) {
		case INT:
			arr_int = arr;
			print_array_int(arr_int, size, start_at, end_at, delim);
			break;
		case CHAR:
			arr_char = arr;
			break;
		default:
			fprintf(stderr, "Array type not recognized\n");
			return;
	}
		
	return;
}
コード例 #7
0
ファイル: op_datatypes.c プロジェクト: kynan/op2-c-reference
void dump_map ( op_map const * map, char const * filename ) {
  FILE *f = fopen(filename, "w");
  fprintf(f,"%s %d\n\n", map->name, map->dim);
  print_array_int(f, map->map, map->from->size * map->dim);
  fclose(f);
}