/ Randle /

记录详情

System Error

/in/foo.cc: In function 'int main()':
/in/foo.cc:29:9: warning: suggest parentheses around operand of '!' or change '&' to '&&' or '!' to '~' [-Wparentheses]
      if(!i&1<<k)
         ^~
/in/foo.cc:32:17: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
       if(i==1<<n-1) ans=min(ans,dp[i|1<<k][j]);
                ~^~
VJ4Error('ProblemDataNotFoundError', '题目 59d77a7ed3d8a1361ae60a99 的数据未找到。', 'Randle', '59d77a7ed3d8a1361ae60a99')

代码

#include<bits/stdc++.h>
#define maxn 20
using namespace std;
int dp[maxn][maxn],a[maxn][maxn];
int ans=-1,n;
int min(int x,int y)
{
	if(x==-1) return y;
	if(y==-1) return x;
	return x<y?x:y;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	cin>>a[i][j];
	memset(dp,-1,sizeof(dp));
	for(int i=0;i<n;i++)
	dp[1<<i][i]=0;
	for(int i=0;i<1<<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(dp[i][j]!=-1)
			{
				for(int k=0;k<n;k++)
				{
					if(!i&1<<k)
					{
						dp[i|1<<k][j]=min(dp[i|1<<k][j],dp[i][j]+a[j][k]);
						if(i==1<<n-1) ans=min(ans,dp[i|1<<k][j]);
					}
				}
			}
		}
	}
	if(ans!=-1)
	cout<<ans<<endl;
	return 0;
}

信息

递交者
类型
递交
题目
图形堆积(原创)
题目数据
下载
语言
C++
递交时间
2017-10-07 15:09:31
评测时间
2017-10-07 15:09:31
评测机
分数
0
总耗时
0ms
峰值内存
0 Bytes