hdu 1572(dfs+最短路)

来源:互联网 发布:php ture还是true 编辑:程序博客网 时间:2024/05/22 10:37

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1572

思路:dfs暴搜即可。

View Code
 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define MAXN 33 6 #define inf 1<<30 7 int map[MAXN][MAXN]; 8 int n,MIN,k; 9 int num[MAXN];10 bool mark[MAXN];11 12 void dfs(int start,int count,int dist){13     if(count==k){14         MIN=min(dist,MIN);15         return ;16     }17     for(int i=1;i<=k;i++){18         if(!mark[i]){19             mark[i]=true;20             dfs(num[i],count+1,dist+map[start][num[i]]);21             mark[i]=false;22         }23     }24 }25 26 27 int main(){28     int _case;29     while(~scanf("%d",&n)&&n){30         for(int i=0;i<n;i++){31             for(int j=0;j<n;j++){32                 scanf("%d",&map[i][j]);33             }34         }35         k=0,MIN=inf;36         scanf("%d",&_case);37         memset(mark,false,sizeof(mark));38         while(_case--){39             int x;40             scanf("%d",&x);41             if(mark[x])continue;42             mark[x]=true;43             num[++k]=x;44         }45         memset(mark,false,sizeof(mark));46         dfs(0,0,0);47         printf("%d\n",MIN);48     }49     return 0;50 }

 

0 0
原创粉丝点击