Skip to content
Snippets Groups Projects
Commit 20f275bd authored by Alam's avatar Alam
Browse files

WTf

parent 4c9f469e
No related merge requests found
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
#define NIM 13517075
typedef enum { false, true } bool;
int minDistance(int V, int dist[], bool sptSet[]) {
int min = INT_MAX, min_index = -1;
for (int v = 0; v < V; v++)
if (sptSet[v] == false && dist[v] <= min)
min = dist[v], min_index = v;
return min_index;
}
int printSolution(FILE *file, int V, int dist[]) {
for (int i = 0; i < V; i++) {
fprintf(file,"%d",dist[i]);
if(i<(V-1)){
fprintf(file," ");
}
}
fprintf(file,"\n");
}
void dijkstra(int V, int graph[V * V], int dist[V], int src) {
bool sptSet[V];
for (int i = 0; i < V; i++)
dist[i] = INT_MAX, sptSet[i] = false;
dist[src] = 0;
for (int count = 0; count < V - 1; count++) {
int u = minDistance(V, dist, sptSet);
if (u == -1) break;
sptSet[u] = true;
for (int v = 0; v < V; v++) {
int temp = dist[u] + graph[u * V + v];
if (
!sptSet[v] &&
temp < dist[v] &&
temp > 0
) dist[v] = temp;
}
}
}
void createGraph(int N, int graph[]) {
int value;
srand(NIM);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
graph[i * N + j] = 0;
}
}
for (int i = 0; i < N; i++) {
for (int j = i; j < N; j++) {
if (i != j) {
value = rand() % 10000;
graph[i * N + j] = value;
graph[j * N + i] = value;
}
}
}
}
int main(int argc, char **argv) {
FILE *output_file;
double end, start;
if (argc != 2) {
fprintf(stderr, "Usage: number of node required\n");
exit(1);
}
int N = atoi(argv[1]);
int* graph = malloc(N * N * sizeof(int));
// open file
output_file = fopen("../out/sequential.txt","w+");
createGraph(N, graph);
// Time start
start = omp_get_wtime();
for (int i = 0; i < N; i++) {
int* globalDist = malloc(N * sizeof(int));
dijkstra(N, graph, globalDist, i);
printSolution(output_file,N, globalDist);
free(globalDist);
}
//end
end = omp_get_wtime();
double time_taken = end-start;
printf("Time elapsed : %f\n", time_taken);
free(graph);
return 0;
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment