fork download
  1. #include <stdio.h>
  2. int n, c[105][105], X[105];
  3. int visited[105];
  4. int min = 1e9;
  5. int dis = 0;
  6. void Try(int i){
  7. for(int j = 1; j<= n; j++){
  8. if(!visited[j]){
  9. X[i] = j;
  10. visited[j] = 1;
  11. dis += c[X[i-1]][X[i]];
  12. if(i == n){
  13.  
  14. if(dis + c[X[i]][X[1]] < min){ // chỗ này thay vì thay dis += c[X[i]][X[1]] thì thay thẳng vào hàm if
  15. min = dis+ c[X[i]][X[1]];
  16. }
  17. }
  18. else{
  19. Try(i+1);
  20. }
  21. dis -= c[X[i-1]][X[i]];
  22. visited[j] = 0;
  23. }
  24. }
  25. }
  26.  
  27. int main(){
  28. scanf("%d", &n);
  29. for(int i = 1; i<= n; i++){
  30. for(int j = 1; j<= n; j++){
  31. scanf("%d", &c[i][j]);
  32. }
  33. }
  34. for(int j = 1; j<= n; j++){
  35. visited[j] = 0;
  36. }
  37. X[1] = 1;
  38. visited[1] = 1;
  39. Try(2);
  40. printf("%d", min);
  41. }
Success #stdin #stdout 0s 5308KB
stdin
Standard input is empty
stdout
1000000000