/ Randle /

记录详情

Accepted


  
# 状态 耗时 内存占用
#1 Accepted 7ms 5.359 MiB
#2 Accepted 5ms 5.336 MiB
#3 Accepted 6ms 5.359 MiB
#4 Accepted 9ms 5.367 MiB
#5 Accepted 12ms 5.344 MiB
#6 Accepted 6ms 5.367 MiB
#7 Accepted 5ms 5.348 MiB
#8 Accepted 18ms 5.363 MiB
#9 Accepted 7ms 5.328 MiB
#10 Accepted 8ms 5.359 MiB

代码

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdio>
using namespace std;
int map[20][20];
int dp[1<<16][20];
int n;
int main()
{
	cin>>n;
	memset(dp,127,sizeof(dp));
	for(int i=0;i<=n;i++)
	{
		for(int j=0;j<=n;j++)
		{
			cin>>map[i][j];
		}
	}
	for(int i=0;i<=n;i++)
	{
		for(int j=0;j<=n;j++)
		{
			for(int k=0;k<=n;k++)
			{
				if(i!=j&&map[i][k]+map[k][j]<map[i][j])
				{
					map[i][j]=map[i][k]+map[k][j];
				}
			}
		}
	}
	int maxx=(1<<(n+1))-1;
	for (int i=0;i<=n;i++) dp[0][i]=map[0][i];
	for (int s=1;s<=maxx;s++)
        for (int j=0;j<=n;j++)
            if (!((1<<j)&s)){
                for (int i=0;i<=n;i++){
                    if (s&(1<<i)){
                        dp[s][j]=min(dp[s][j],dp[s^(1<<i)][i]+map[i][j]);
                    }
                }
            }
  cout<<dp[maxx-1][0];
  return 0;
	
	
	
}

信息

递交者
类型
递交
题目
送外卖
题目数据
下载
语言
C++
递交时间
2017-10-09 21:24:24
评测时间
2017-10-09 21:24:24
评测机
分数
100
总耗时
87ms
峰值内存
5.367 MiB