为什么编译错误啊qwq
  • 板块P1433 吃奶酪
  • 楼主kkksc24
  • 当前回复18
  • 已保存回复18
  • 发布时间2025/7/3 16:40
  • 上次更新2025/7/4 06:26:58
查看原帖
为什么编译错误啊qwq
1471193
kkksc24楼主2025/7/3 16:40
#include<bits/stdc++.h>
using namespace std;
const int N=25,M=1<<15+10;
double dp[N][M],dis[N][N],x[N],y[N],ans=1e9;
double distance(int v,int w){return sqrt((x[v]-x[w])*(x[v]-x[w])+(y[v]-y[w])*(y[v]-y[w]));}
int main(){
	int n;cin>>n;
	for(int i=1;i<=n;i++)cin>>x[i]>>y[i];
	x[0]=0,y[0]=0;
	for(int i=0;i<=n;i++)
		for(int j=i+1;j<=n;j++)
			dis[i][j]=distance(i,j);
			dis[j][i]=dis[i][j];
	memset(dp,127,sizeof(dp));
	for(int i=1;i<=n;i++)dp[i][1<<(i-1)]=dis[0][i];
	for(int i=1;i<(1<<n);i++){
		for(int j=1;j<=n;j++){
			if(!i&1<<(j-1))continue;
			for(int k=1;k<=n;k++){
				if(i==j||!i&1<<(k-1))continue;
				dp[j][i]=min(dp[j][i],dp[k][i-1<<(k-1)]+dis[i][j]);
			}
		}
	}
	for(int i=1;i<=n;i++)ans=min(ans,dp[i][1<<n]-1);
	cout<<ans;
	return 0;
}
2025/7/3 16:40
加载中...