zoukankan      html  css  js  c++  java
  • poj 3311 状态压缩

    注意  起点是  1 这个点

    #include<iostream>
    #include<stdio.h>
    #include<cstring>
    #include<algorithm>
    #define inf 0x1f1f1f1f
    #define min( x,y ) ((x)>(y)?(y):(x))
    
    using namespace std;
    
    int N,dis[12][12],dp[1<<11][11];
    int main( )
    {
        int i,j,k;
        while( scanf("%d",&N) && N )
        {
            N++;
            memset( dis,inf,sizeof(dis) );
            for( i = 1; i <= N; i++ )
               dis[i][i] = 0;
            for( i = 1; i <= N; i++ )
            for( j = 1; j <= N; j++ )
               scanf("%d",&dis[i][j]);
            for( k = 1; k <= N; k++ )
            for( i = 1; i <= N; i++ )
            for( j = 1; j <= N; j++ )
            {
                dis[i][j] = min( dis[i][j],dis[i][k] + dis[k][j] );
            }
            memset( dp,inf,sizeof(dp) );
            dp[1][1] = 0;
            for( i = 1; i < (1<<N); i++ )
            for( j = 1; j <= N; j++ )
            {
                if( dp[i][j] == inf ) continue;
                for( k = 1; k <= N; k++ )
                {
                    if( j == k ) continue;
                    if( i&(1<<(k-1)) )continue;
                    int stu = (i^(1<<(k-1)));
                    dp[stu][k] = min( dp[stu][k],dp[i][j]+dis[j][k] );
                }
            }
            int res = inf;
            for( i = 1; i <= N; i++ )
               res = min( res,dp[(1<<N)-1][i] + dis[i][1] );
            printf("%d\n",res);
        }
        return 0;
    }
    

      

  • 相关阅读:
    JSP内置对象
    Java数据结构
    Java引用传递
    椭圆曲线算法的基本原理及实现
    常见的Java异常
    Java数据结构
    Java数据结构
    重拾JSP
    [洛谷P6185] [NOI online 提高]T1 序列
    [题解][BZOJ1299]巧克力棒
  • 原文地址:https://www.cnblogs.com/wulangzhou/p/3059367.html
Copyright © 2011-2022 走看看