/* Room Assignement - di Enrico Sartorello */ /* #include #include #include #include int main (int argc, char *argv[]) { int N; // numero di studenti int c1,c2, // due studenti coinvolti in un possibile scambio di stanze *a, // array che conterrā l'assegnazione delle stanze agli studenti i,j,k=0,temp; float sum=0, // somma delle incompatibilitā di ogni coppia di studenti della migliore soluzione trovata new_sum, // somma delle incompatibilitā di ogni coppia di studenti della soluzione appena generata t=1, // temperatura **d; // matrice N x N contenente il coefficiente d'attrito di ogni coppia di studenti double elapsed_time; int p,id; MPI_Init(&argc, &argv); MPI_Barrier(MPI_COMM_WORLD); elapsed_time = -MPI_Wtime(); MPI_Comm_rank(MPI_COMM_WORLD, &id); MPI_Comm_size(MPI_COMM_WORLD, &p); if(argc != 2) { if (!id) printf("Command line: %s \n", argv[0]); MPI_Finalize(); exit(1); } N = atoi(argv[1]); a = (int *) malloc(sizeof(int *)*N); // allocazione dinamica array d = (float**)malloc(N * sizeof(float*)); // allocazione dinamica matrice for(i=0;i<=N;i++) { d[i]=(float*)malloc(N * sizeof(float*)); if (d[i] == NULL) { printf("Cannot allocate enough memory\n"); MPI_Finalize(); } } if(a == NULL || d == NULL) { printf("Cannot allocate enough memory\n"); MPI_Finalize(); } // soluzione iniziale scelta iterativamente for (i=0; i