#include <stdio.h>#include <stdlib.h>#define N 5int findMin(int a[][N], int k);int searchMe(int a[][N], int k, int compare);int minAtLast(int c[N]);int main(int argv,char **argc){ FILE *fmatrix; int a[N][N]; int b[N][N]; int c[N]; int i,j,min; int minimum = 0; fmatrix = fopen(argc[1], "r"); if (fmatrix == NULL) { printf("Can't read %s", argc[1]); return 1; } else { // diavazei ton katw trigwniko pinaka apo to arxeio while (!feof(fmatrix)) { for (i = 0; i < N; i++) { for (j = 0; j < i+1; j++) { fscanf(fmatrix, "%d", &a[i][j]); } } } } for (i = 0; i < N; i++) { // "anoigei" ton pinaka metatrepontas ton apo anw trigwniko se tetragwniko for (j = 0; j < N; j++) { a[i][j] = a[j][i]; } } for (i = 0; i < N; i++) { // typwnei ton pinaka for (j = 0; j < N; j++) { printf("%d ", a[i][j]); } printf("\n"); } printf("\n"); for (i = 0; i < N; i++) { int where = i; minimum = 0; for (j = 0; j < N; j++) { min = findMin(a,where); minimum += min; where = searchMe(a,where,min); b[i][j] = where; } c[i] = minimum; } for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%d\t", b[i][j]); } printf("\n"); } printf("%d\n", minAtLast(c)); } int minAtLast(int c[N]){ int j; int min = c[0]; for (j = 1; j < N; j++) if (c[j] < min) min = c[j]; return min;}int findMin(int a[][N], int k){ int j; int min = a[0][0]; for (j = 0; j < N; j++) { if (min == 0) min = a[k][j]; if ((a[k][j] < min) && (a[j][k] != 0)) min = a[j][k]; } return min;}int searchMe(int a[][N], int k, int compare){ int j; for (j = 0; j < N; j++) { if (a[k][j] == compare) return j; }}