6개의 댓글이 있습니다.
-
-
jwl1993 -
아래와 같이 바꿔보았는데도 오류가 나는거같네요.. 알고리즘에 문제가 있는거 같은데 조언을 해주실수 있을까요
#include <iostream> using namespace std; double **cost; double sum; bool *visited; double *weight; int n; bool FindPath(int start, int count); int main(){ int Case; cin >> Case; while(Case--){ cin >> n; sum = 0; cout.precision(10); visited = new bool[n]; weight = new double[n]; cost = new double*[n]; for(int i = 0; i< n; i++) cost[i] = new double[n]; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++) cin >> cost[i][j]; } for(int i = 0 ; i < n ; i++){ for(int j = 0; j < n; j++){ visited[j] = false; weight[j] = -1; } weight[i] = 0; FindPath(i, 1); } cout<<fixed<<sum<<endl; } return 0; } bool FindPath(int start, int count){ if(count == n){ if(sum != 0){ if(sum > weight[start]) sum = weight[start]; } else sum = weight[start]; return true; } visited[start] = true; for(int i = 0; i < n; i++ ){ if(!visited[i]){ if(weight[i] == -1){ weight[i] = cost[start][i] + weight[start]; } else{ if(weight[i] > cost[start][i] + weight[start]) weight[i] = cost[start][i] + weight[start]; } FindPath(i, count +1); } } // 최단 경로 구하기 }
9년 전 link
-
-
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
jwl1993
예제 input으로는 답이 나오는데 제출을 하면 오답이 나오네요..
고민을 많이 해봤는데.. 제눈에는 잘 안보여서 이렇게 질문 드립니다.
9년 전