wojiaocbj

choosenum

Apr 16th, 2022
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.82 KB | None | 0 0
  1. /*
  2.  Author: 曹北健(37509)
  3.  Result: AC Submission_id: 4329393
  4.  Created at: Sat Apr 16 2022 19:44:39 GMT+0800 (China Standard Time)
  5.  Problem: 5581  Time: 7 Memory: 1732
  6. */
  7.  
  8. #include <stdio.h>
  9. int map[16][16] = { 0 }, m;
  10. int ans;
  11. void dfs(int k, int v, int cursum){
  12.     int i;
  13.     if(k >= m){
  14.         if(ans > cursum){
  15.             ans = cursum;
  16.         }
  17.     }
  18.     else{
  19.         if(cursum >= ans){
  20.             return;
  21.         }
  22.         else{
  23.             for(i = 0; i < m; i++){
  24.                 if(!((i == v - 1) || (i == v) || (i == v + 1))){
  25.                     dfs(k + 1, i, cursum + map[k][i]);
  26.                 }
  27.             }
  28.         }
  29.     }
  30. }
  31. int main(){
  32.     int n, i, j;
  33.     scanf("%d", &n);
  34.     while(n--){
  35.         scanf("%d", &m);
  36.         for(i = 0; i < m; i++){
  37.             for(j = 0; j < m; j++){
  38.                 scanf("%d", &(map[i][j]));
  39.             }
  40.         }
  41.         ans = 0x7fffffff;
  42.         for(i = 0; i < m; i++){
  43.             dfs(0, i, 0);
  44.         }
  45.         printf("%d\n", ans);
  46.     }
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment