>>4
11行目(adjacentの宣言):変更
int adjacent[N_MAX][N_MAX]; // 隣接行列 (N_MAX × N_MAXの配列)
↓
int **adjacent; // 隣接行列 (N × Nの配列)
16~19行目(配列の初期化処理):削除
41行目(点の数を読み込んだ後):追加
// 配列の領域を確保&初期化
adjacent = (int **)malloc(sizeof(int *) * N);
for ( i=0; i<N; i++ ) {
adjacent[i] = (int *)malloc(sizeof(int) * N);
for ( j=0; j<N; j++ )
adjacent[i][j] = 0;
}
57行目(ファイル閉じる前) or 60行目(ファイル閉じた後):追加
// 配列の領域を解放
for ( i=0; i<N; i++ )
free(adjacent[i]);
free(adjacent);
…あと、#defineと33~36(上限チェック)は抜くかはお好みで。