zoukankan      html  css  js  c++  java
  • TSP

    2017-08-11 21:10:21

    艾教写的

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<queue>
    #include<map>
    #include<set>
    #include<stack>
    using namespace std;
    typedef long long LL;
    int n;
    int dis[20][20];
    int dp[20][1<<16];
    int min(int x,int y)
    {
        if (x==-1) return y;
        if (y==-1) return x;
        if (x<=y) return x;
        return y;
    }
    int main()
    {
        while(scanf("%d",&n) && n)
        {
            for(int i=0;i<=n;i++)
            for(int j=0;j<=n;j++)
                cin>>dis[i][j];
            for(int k=0;k<=n;k++)
                for(int i=0;i<=n;i++)
                    for(int j=0;j<=n;j++)
                    if (i!=j && j!=k && i!=k)
                        dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
            n++;
            memset(dp,-1,sizeof(dp));
            dp[0][0]=0;
            for(int state=0;state<(1<<n);state++)
            {
                for(int i=0;i<n;i++)
                if (dp[i][state]!=-1)
                {
                    for(int j=0;j<n;j++)
                    if (((1<<j)&state)==0)
                    {
                        dp[j][state|(1<<j)]=min(dp[j][state|(1<<j)],dp[i][state]+dis[i][j]);
                    }
                }
            }
            int ans=dp[0][(1<<n)-1];
            cout<<ans<<endl;
        }
    }
  • 相关阅读:
    Springboot中使用Scala开发
    aliyun阿里云Maven仓库地址
    css文字滚动
    随笔
    下拉菜单事件
    微信分享
    微信分享功能
    随笔记
    全屏设置
    判定复选框的选中状态
  • 原文地址:https://www.cnblogs.com/pprp/p/7347980.html
Copyright © 2011-2022 走看看