본문 바로가기
이것저것

lg 물류창고 문제(플로이드 알고리즘)

by 문자메일 2019. 4. 14.

#include
using namespace std;

#define INF 1<<15
int N, M;//공장 수, 도로 정보 수
int A[5000], B[5000], D[5000];//공장 A, 공장 B, 거리 D
int arr[110][110] = {INF,};

void InputData(){
int i;
cin >> N >> M;
for (i = 0; i < M; i++){
cin >> A[i] >> B[i] >> D[i];
}
}

int main(){
int ans = -1;
InputData();// 입력 함수
for(int i=1; i<=N; i++){
for(int j=1; j<=N; j++){
arr[i][j] = INF;
if(i == j) arr[i][j] = 0;
}
}
for(int i=0; i arr[A[i]][B[i]] = D[i];
arr[B[i]][A[i]] = D[i];
}

//거쳐가는
for(int i=1; i<=N; i++){
//시작
for(int j=1; j<=N; j++){
//if(i==j)continue;
//목적지
for(int k=1; k<=N; k++){
//if(k==i || k==j) continue;
if(arr[j][k] > arr[j][i]+arr[i][k])
arr[j][k] = arr[j][i]+arr[i][k];
}
}
}
int row=1;
ans=INF;
int tempMax=0;
for(int i=1; i<=N; i++){
for(int j=1; j<=N; j++){
//printf("%d ", arr[i][j]);
if(arr[i][j] != INF){
tempMax = tempMax > arr[i][j] ? tempMax : arr[i][j];
}
}
if(ans > tempMax){
row=i;
ans = tempMax;
}
tempMax = 0;

//printf("\n");
}


// 코드를 작성하세요


cout << ans << endl;// 정답 출력
return 0;
}

댓글