DFS

来源:互联网 发布:mac版office2016怎么样 编辑:程序博客网 时间:2024/05/29 14:29
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
const int oo=10000000;
using namespace std;
int a[260][260],p[20]={0},d[16],ans=oo;    int i,j,k,m,n,u;
void dfs(int pos,int s,int step){
    if(s>ans)return ;
    if(step>=n-1){
        s+=a[pos][n];
        if(s<ans)ans=s;
        return ;
    }
    int i;
    for(i=2;i<n;i++){
        if(!p[i]){
            p[i]=1;
            dfs(i,s+a[pos][i],step+1);
            p[i]=0;
        }
    }
    return ;
}
int main(){

freopen("luoge.in","r",stdin);
freopen("luoge.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            scanf("%d",&a[i][j]);
    p[1]=1;
    dfs(1,0,1);
    cout<<ans;
    return 0;
}

1 0
原创粉丝点击