Beruflich Dokumente
Kultur Dokumente
BATCH A2
-----------------------------------------------------------// only able to send to 1 processor*/
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
#define DIM 1000
void initialization(void);
void delete_elements(int);
struct prim_data {
int
int
int
int
int
};
edges_weight[DIM][DIM];
dimension;
U[DIM];
total_min_distance;
count_nodes_in_mst;
//Print all the nodes in MST in the way that they stored in the U set
for(i = 0 ; i < prim.dimension; i++) {
printf("%d ",prim.U[i] + 1);
if( i < prim.dimension - 1 ) printf("-> ");
}
printf("\n\n");
printf("Total minimun distance: %d\n\n", prim.total_min_distance);
printf("\nProgram terminates now..\n");
return 0;
}
void initialization(void) {
int i,j;
prim.total_min_distance = 0;
prim.count_nodes_in_mst = 0;
//initializing the U set
for(i = 0; i < prim.dimension; i++) prim.U[i] = -1;
//storing the first node into the U set
prim.U[0] = 0;
//deleting the first node
delete_elements( prim.U[0] );
//incrementing by one the number of node that are inside the U set
prim.count_nodes_in_mst++;
}
void delete_elements(int next_element) {
int k;
for(k = 0; k < prim.dimension; k++) {
prim.edges_weight[k][next_element] = 0;
}
}
/*OUTPUT:
student@sitrc-OptiPlex-390:~$ gcc -fopenmp -o primsop primsop.c
student@sitrc-OptiPlex-390:~$ ./primsop
Enter the number of nodes:
4
Enter the cost of edges:
999
Cost: 999 From 0 To 0
5
Cost: 5 From 0 To 1
4
Cost: 4 From 0 To 2
999
Cost: 999 From 0 To 3
5
Cost: 5 From 1 To 0
999
Cost: 999 From 1 To 1
999
Cost: 999 From 1 To 2
2
Cost: 2 From 1 To 3
4
Cost:
999
Cost:
999
Cost:
3
Cost:
999
Cost:
2
Cost:
3
Cost:
999
Cost:
4 From 2 To 0
999 From 2 To 1
999 From 2 To 2
3 From 2 To 3
999 From 3 To 0
2 From 3 To 1
3 From 3 To 2
999 From 3 To 3
2 starting
0 starting
1 starting
3 starting