diff --git a/add.c b/add.c
deleted file mode 100644
index 4df7e38b16e0f2f22ebe66b9f926b299638095ab..0000000000000000000000000000000000000000
--- a/add.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include "cuda.h"
-
-int main(int argc, char const *argv[])
-{
-    int N = 1<<20;
-    float *x, *y;
-
-    // float *x = malloc(sizeof(float) * N);
-    // float *y = malloc(sizeof(float) * N);
-
-    // Allocate Unified Memory – accessible from CPU or GPU
-    cudaMallocManaged(&x, N*sizeof(float));
-    cudaMallocManaged(&y, N*sizeof(float));
-
-    for (int i = 0; i < N; i++) {
-        x[i] = 1.0f;
-        y[i] = 2.0f;
-    }
-
-    int blockSize = 256;
-    int numBlocks = (N + blockSize - 1) / blockSize;
-    add<<<numBlocks, blockSize>>>(N, x, y);
-
-    // Wait for GPU to finish before accessing on host
-    cudaDeviceSynchronize();
-
-    float maxError = 0.0f;
-    for (int i = 0; i < N; i++)
-        maxError = fmax(maxError, fabs(y[i]-3.0f));
-    printf("Max error: %f", maxError);
-    
-    // Free memory
-    cudaFree(x);
-    cudaFree(y);
-    
-    return 0;
-}
-
-__global__
-void add(int n, float *x, float *y)
-{
-  int index = blockIdx.x * blockDim.x + threadIdx.x;
-  int stride = blockDim.x * gridDim.x;
-  for (int i = index; i < n; i += stride)
-    y[i] = x[i] + y[i];
-}
\ No newline at end of file
diff --git a/src/cuda.c b/src/cuda.c
deleted file mode 100644
index 26d84a24e2ea55fa35733d52c8d2a68c3ae863c0..0000000000000000000000000000000000000000
--- a/src/cuda.c
+++ /dev/null
@@ -1,191 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <time.h>
-#include <omp.h>
-
-#define TRUE 1
-#define FALSE 0
-#define INF LONG_MAX
-// #define N_THREADS 10
-#define OUTPUT_FILE_PATH "parallel_result.txt"
-
-int read_n(int my_rank);
-void print_matrix(long matrix[], int n_row, int n_col);
-void print_array(long arr[], int len);
-int idx_min_distance(long connd[], long dist[], int len);
-long *initialize_matrix(int random_number, int n);
-long *initialize_result(int n);
-void write_output(long matrix[], int n_row, int n_col, double time);
-void dijkstra(int n, int sub_n, long matrix[], long result[]);
-
-int main (int argc, char **argv) {
-    long *matrix, *result;   // Matrix size i * j of distance from vertice [i] to vertice [j]
-    int n, sub_n;                   // Number of vertices
-    // int my_rank, thread_count, sub_n;
-    clock_t start, end;
-    double cpu_time_used;
-    
-    /* Read number of vertices */
-    printf("Number of vertices (n): "); scanf("%d", &n);
-
-    int thread_count = strtol(argv[1], NULL, 10);
-    if (n < thread_count) {
-        sub_n = 1;
-        thread_count = n;
-    } else {
-        sub_n = n / thread_count;
-    }
-    
-    matrix = initialize_matrix(13517142, n);
-    printf("\nGenerated %d * %d matrix.\n", n, n);
-
-    result = initialize_result(n);
-
-    start = clock();
-	
-	dijkstra(n, sub_n, matrix, result);
-
-	end = clock();
-	cpu_time_used = (((double) (end - start)) / CLOCKS_PER_SEC) * 1000000;
-	write_output(result, n, n, cpu_time_used);
-	printf("\nResults written to %s.\n", OUTPUT_FILE_PATH);
-
-	free(result);
-    free(matrix);
-}
-
-int read_n(int my_rank) {
-    int n;
-
-    if (my_rank == 0) {
-        printf("Number of vertices (n): ");
-        scanf("%d", &n);
-    }
-    return n;
-}
-
-void print_matrix(long matrix[], int n_row, int n_col) {
-    for (int i = 0; i < n_row; i++) {
-        for (int j = 0; j < n_col; j++) {
-            printf("%ld ", matrix[i * n_col + j]);
-        }
-        printf("\n");
-    }
-}
-
-void print_array(long arr[], int len) {
-    for (int i = 0; i < len; i++) {
-        printf("%ld ", arr[i]);
-    }
-    printf("\n");
-}
-
-int idx_min_distance(long connd[], long dist[], int len) {
-    long min_dist = INF;
-    int idx_min_dist = -1;
-    for (int i = 0; i < len; i++) {
-        if (connd[i] != TRUE) {
-            if (dist[i] < min_dist) {
-                min_dist = dist[i];
-                idx_min_dist = i;
-            }
-        }
-    }
-    return idx_min_dist;
-}
-
-void write_output(long matrix[], int n_row, int n_col, double time) {
-    FILE * file;
-    file = fopen (OUTPUT_FILE_PATH,"w");
-    for (int i = 0; i < n_row; i++) {
-        for (int j = 0; j < n_col; j++) {
-            fprintf(file, "%ld ", matrix[i * n_col + j]);
-        }
-        fprintf(file, "\n");
-    }
-    fprintf(file, "Process finished in %f microseconds.\n", time);
-    fclose (file);
-}
-
-long *initialize_matrix(int random_number, int n) {
-    /* Initialize variables */
-    long *matrix = malloc(sizeof(long) * n*n);
-
-	srand(random_number);
-	for (int i = 0; i < n; i++) {
-		for (int j = 0; j <= i; j++) {
-			if (i == j) {
-				matrix[i * n + j] = 0;
-			} else {
-				long dist = rand();
-				matrix[i * n + j] = dist;
-				matrix[j * n + i] = dist;
-			}
-		}
-	}
-    return matrix;
-}
-
-long *initialize_result(int n) {
-    long *result = malloc(sizeof(long) * n*n);
-
-    for (int i = 0; i < n; i++) {
-        for (int j = 0; j < n; j++) {
-            if (i == j) {
-                result[i * n + j] = 0;
-            } else {
-                result[i * n + j] = INF;
-            }
-        }
-    }
-
-    return result;
-}
-
-void dijkstra(int n, int sub_n, long matrix[], long result[]) {
-	long *connected;         // Array of 'boolean' on whether vertice [i] is connected to source
-    long *distance;          // Distance of vertice [i] from source
-	int my_rank = omp_get_thread_num();
-
-	connected = malloc(n * sizeof(long));
-    distance = malloc(n * sizeof(long));
-
-	for (int SOURCE_V = my_rank * sub_n; SOURCE_V < (my_rank + 1) * sub_n; SOURCE_V++) {
-        for (int i = 0; i < n; i++) {
-            if (i == SOURCE_V) {
-                connected[i] = TRUE;
-            } else {
-                connected[i] = FALSE;
-            }
-        }
-
-        for (int i = 0; i < n; i++) {
-            distance[i] = matrix[SOURCE_V * n + i];
-        }
-        
-        /* Djikstra */
-        for (int i = 1; i < n; i++) {
-            int closest_v = idx_min_distance(connected, distance, n);
-            connected[closest_v] = TRUE;
-            
-            /* Update distances */
-            /* With unconnected vertices in distance array */
-            for (int j = 0; j < n; j++) {
-                if (connected[j] == FALSE) {
-                    /* If not connected, only concern with distance array */
-                    long new_dist = distance[closest_v] + matrix[closest_v * n + j];
-                    if (new_dist < distance[j]) {
-                        distance[j] = new_dist;
-                    }
-                }
-            }
-            for (int j = 0; j < n; j++) {
-                result[SOURCE_V * n + j] = distance[j];
-            }
-        }
-    }
-
-    free(connected);
-    free(distance);
-}
\ No newline at end of file
diff --git a/src/serial.c b/src/serial.c
deleted file mode 100644
index 08747f21bf5ba7cc9c319c024a507f6af20cbd26..0000000000000000000000000000000000000000
--- a/src/serial.c
+++ /dev/null
@@ -1,199 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <time.h>
-
-#define TRUE 1
-#define FALSE 0
-#define INF LONG_MAX
-#define OUTPUT_FILE_PATH "serial_result.txt"
-
-void print_matrix(long matrix[], int n_row, int n_col);
-void print_array(long arr[], int len);
-int idx_min_distance(long connd[], long dist[], int len);
-long *initialize_matrix(int random_number, int n);
-long *initialize_result(int n);
-void write_output(long matrix[], int n_row, int n_col, double time);
-
-int main (int argc, char **argv) {
-    long *matrix, *result;   // Matrix size i * j of distance from vertice [i] to vertice [j]
-    long *connected;         // Array of 'boolean' on whether vertice [i] is connected to source [0]
-    long *distance;          // Distance of vertice [i] from source [0]
-    int n;                   // Number of vertices
-
-    /* Read number of vertices */
-    printf("Number of vertices (n): "); scanf("%d", &n);
-
-    matrix = initialize_matrix(13517142, n);
-    printf("\nGenerated %d * %d matrix.\n", n, n);
-    //print_matrix(matrix, n, n);
-
-    result = initialize_result(n);
-    connected = malloc(n * sizeof(long));
-    distance = malloc(n * sizeof(long));
-
-    clock_t start, end;
-    double cpu_time_used;
-    start = clock();
-
-    for (int SOURCE_V = 0; SOURCE_V < n; SOURCE_V++) {
-        for (int i = 0; i < n; i++) {
-            if (i == SOURCE_V) {
-                connected[i] = TRUE;
-            } else {
-                connected[i] = FALSE;
-            }
-        }
-
-        for (int i = 0; i < n; i++) {
-            distance[i] = matrix[SOURCE_V * n + i];
-        }
-        
-        /* Djikstra */
-        for (int i = 1; i < n; i++) {
-            //printf("------------------------------------------------\n");
-            //printf("CONNECTED       : ");
-            //print_array(connected, n);
-            //printf("DISTANCE FROM %d : ", SOURCE_V);
-            //print_array(distance, n);
-
-            int closest_v = idx_min_distance(connected, distance, n);
-            //printf("Closest vertice is: %d\n", closest_v);
-            connected[closest_v] = TRUE;
-            
-            /* Update distances */
-            /* With unconnected vertices in distance array */
-            for (int j = 0; j < n; j++) {
-                if (connected[j] == FALSE) {
-                    /* If not connected, only concern with distance array */
-                    long new_dist = distance[closest_v] + matrix[closest_v * n + j];
-                    if (new_dist < distance[j]) {
-                        distance[j] = new_dist;
-                    }
-                }
-            }
-            
-            /* With connected vertices in result matrix */
-            /* int closest_to_closest_v = SOURCE_V;
-            if (distance[closest_v] != matrix[closest_v * n + SOURCE_V]) {
-                for (int i = 0; i < n; i++) {
-                    if (connected[i] == TRUE && i != closest_v) {
-                        long dist_closest_to_v = matrix[closest_v * n + closest_to_closest_v];
-                        long i_to_v = matrix[closest_v * n + i];
-                        if (i_to_v < dist_closest_to_v) {
-                            closest_to_closest_v = i;
-                        }
-                    }
-                }
-                result[closest_v * n + closest_to_closest_v] = matrix[closest_v * n + closest_to_closest_v];
-                result[closest_to_closest_v * n + closest_v] = matrix[closest_v * n + closest_to_closest_v];
-            }
-            result[closest_v * n + SOURCE_V] = distance[closest_v];
-            result[SOURCE_V * n + closest_v] = distance[closest_v];
-            for (int i = 0; i < n; i++) {
-                if (connected[i] == TRUE && i != closest_v && i != closest_to_closest_v) {
-                    result[closest_v * n + i] = distance[closest_v] + distance[i];
-                    result[i * n + closest_v] = distance[closest_v] + distance[i];
-                }
-            }*/
-        }
-
-        for (int j = 0; j < n; j++) {
-            result[SOURCE_V * n + j] = distance[j];
-        }
-    }
-
-    //printf("\n----------------------RESULTS---------------------\n", n, n);
-    //print_matrix(result, n, n);
-    end = clock();
-    cpu_time_used = (((double) (end - start)) / CLOCKS_PER_SEC) * 1000000;
-    //cpu_time_used = (end - start);
-    write_output(result, n, n, cpu_time_used);
-    printf("\nResults written to %s.\n", OUTPUT_FILE_PATH);
-
-    /* Deallocation */
-    free(matrix);
-    free(result);
-    free(connected);
-    free(distance);
-}
-
-void print_matrix(long matrix[], int n_row, int n_col) {
-    for (int i = 0; i < n_row; i++) {
-        for (int j = 0; j < n_col; j++) {
-            printf("%ld ", matrix[i * n_col + j]);
-        }
-        printf("\n");
-    }
-}
-
-void print_array(long arr[], int len) {
-    for (int i = 0; i < len; i++) {
-        printf("%ld ", arr[i]);
-    }
-    printf("\n");
-}
-
-int idx_min_distance(long connd[], long dist[], int len) {
-    long min_dist = INF;
-    int idx_min_dist = -1;
-    for (int i = 0; i < len; i++) {
-        if (connd[i] != TRUE) {
-            if (dist[i] < min_dist) {
-                min_dist = dist[i];
-                idx_min_dist = i;
-            }
-        }
-    }
-    return idx_min_dist;
-}
-
-void write_output(long matrix[], int n_row, int n_col, double time) {
-    FILE * file;
-    file = fopen (OUTPUT_FILE_PATH,"w");
-    for (int i = 0; i < n_row; i++) {
-        for (int j = 0; j < n_col; j++) {
-            fprintf(file, "%ld ", matrix[i * n_col + j]);
-        }
-        fprintf(file, "\n");
-    }
-    fprintf(file, "Process finished in %f microseconds.\n", time);
-    fclose (file);
-}
-
-
-long *initialize_matrix(int random_number, int n) {
-    /* Initialize variables */
-    long *matrix = malloc(sizeof(long) * n*n);
-    
-    srand(random_number);
-    for (int i = 0; i < n; i++) {
-        for (int j = 0; j <= i; j++) {
-            if (i == j) {
-                matrix[i * n + j] = 0;
-            } else {
-                long dist = (rand() % 9) + 1;
-                matrix[i * n + j] = dist;
-                matrix[j * n + i] = dist;
-            }
-        }
-    }
-
-    return matrix;
-}
-
-long *initialize_result(int n) {
-    long *result = malloc(sizeof(long) * n*n);
-
-    for (int i = 0; i < n; i++) {
-        for (int j = 0; j < n; j++) {
-            if (i == j) {
-                result[i * n + j] = 0;
-            } else {
-                result[i * n + j] = INF;
-            }
-        }
-    }
-
-    return result;
-}
\ No newline at end of file