diff --git a/parallel.cu b/parallel.cu
index 9b92286056644e319038db74cd7321749c92c8f3..7ba454a18386368992c57911b0ccfe92bff6902b 100644
--- a/parallel.cu
+++ b/parallel.cu
@@ -6,13 +6,19 @@
 #define TRUE 1
 #define FALSE 0
 #define INF LONG_MAX
-// #define N_THREADS 10
+#define N_BLOCKS 100
+#define N_THREADS 1
 #define OUTPUT_FILE_PATH "parallel_result.txt"
 
+__host__ __device__
 void print_matrix(long matrix[], int n_row, int n_col);
+__host__ __device__
 void print_array(long arr[], int len);
+__host__ __device__
 long *initialize_matrix(int random_number, int n);
+__host__ __device__
 long *initialize_result(int n);
+__host__ __device__
 void write_output(long matrix[], int n_row, int n_col, double time);
 
 __global__
@@ -86,8 +92,6 @@ int main (int argc, char **argv) {
     
     /* Read number of vertices */
     printf("Number of vertices (n): "); scanf("%d", &n);
-    printf("Number of blocks      : "); scanf("%d", &num_blocks);
-    printf("Number of threads     : "); scanf("%d", &num_threads);
     
     matrix = initialize_matrix(13517142, n);
     printf("\nGenerated %d * %d matrix.\n", n, n);
@@ -96,9 +100,9 @@ int main (int argc, char **argv) {
 
     start = clock();
 
-    int sub_n = n / (num_blocks * num_threads);
+    int sub_n = n / (N_BLOCKS * N_THREADS);
 	
-	dijkstra<<<num_blocks,num_threads>>>(n, sub_n, matrix, result);
+	dijkstra<<<N_BLOCKS,N_THREADS>>>(n, sub_n, matrix, result);
 
     cudaDeviceSynchronize();
 
@@ -111,6 +115,7 @@ int main (int argc, char **argv) {
     cudaFree(matrix);
 }
 
+__host__ __device__
 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++) {
@@ -120,6 +125,7 @@ void print_matrix(long matrix[], int n_row, int n_col) {
     }
 }
 
+__host__ __device__
 void print_array(long arr[], int len) {
     for (int i = 0; i < len; i++) {
         printf("%ld ", arr[i]);
@@ -127,6 +133,7 @@ void print_array(long arr[], int len) {
     printf("\n");
 }
 
+__host__ __device__
 void write_output(long matrix[], int n_row, int n_col, double time) {
     FILE * file;
     file = fopen (OUTPUT_FILE_PATH,"w");
@@ -140,6 +147,7 @@ void write_output(long matrix[], int n_row, int n_col, double time) {
     fclose (file);
 }
 
+__host__ __device__
 long *initialize_matrix(int random_number, int n) {
     /* Initialize variables */
     long *matrix;
@@ -151,7 +159,7 @@ long *initialize_matrix(int random_number, int n) {
 			if (i == j) {
 				matrix[i * n + j] = 0;
 			} else {
-				long dist = (rand() % 9) + 1;
+				long dist = rand();
 				matrix[i * n + j] = dist;
 				matrix[j * n + i] = dist;
 			}
@@ -160,6 +168,7 @@ long *initialize_matrix(int random_number, int n) {
     return matrix;
 }
 
+__host__ __device__
 long *initialize_result(int n) {
     long *result;
     cudaMallocManaged(&result, n*n*sizeof(long));