/ Randle /

记录详情

Accepted

/in/foo.cc:13:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main()
      ^
# 状态 耗时 内存占用
#1 Accepted 5ms 4.309 MiB
#2 Accepted 4ms 4.32 MiB
#3 Accepted 4ms 4.305 MiB
#4 Accepted 4ms 4.309 MiB
#5 Accepted 5ms 4.305 MiB
#6 Accepted 3ms 4.309 MiB
#7 Accepted 3ms 4.305 MiB
#8 Accepted 7ms 4.32 MiB
#9 Accepted 4ms 4.305 MiB
#10 Accepted 3ms 4.301 MiB

代码

#include <bits/stdc++.h>
using namespace std;
int n,ans=99999999;
int s[16][16];
int f[1<<16][16];

int Min(int x,int y)
{
	if(x==-1) return y;
	if(y==-1) return x;
	return x<y? x:y;
}
main()
{
	int i,j,k;
	cin>>n;
	n++;
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			cin>>s[i][j];
	for(k=0;k<n;k++)
		for(i=0;i<n;i++)
			for(j=0;j<n;j++)
				s[i][j]=min(s[i][j],s[i][k]+s[k][j]);
	memset(f,-1,sizeof(f));
	f[1][0]=0;
	for(i=1;i<(1<<n);i++)
		for(j=0;j<n;j++)//当前位置 
			if(f[i][j]!=-1)
				for(k=0;k<n;k++)//目标位置 
					if(!(i&(1<<k)))
					{
						f[i|(1<<k)][k]=Min(f[i|(1<<k)][k],f[i][j]+s[j][k]);
						if((i|(1<<k))==(1<<n)-1)
							ans=min(ans,f[i|(1<<k)][k]+s[k][0]);
					}
	cout<<ans;
}

信息

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