博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4568(SPFA预处理+TSP)
阅读量:6431 次
发布时间:2019-06-23

本文共 1161 字,大约阅读时间需要 3 分钟。

题目链接:

思路:先用spfa预处理出宝藏与宝藏之间的最短距离,宝藏到边界的最短距离,然后就是经典的求TSP过程了。

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 #define MAXN 222 8 #define inf 1<<30 9 10 struct Point{ 11 int x,y; 12 }point[MAXN]; 13 14 int value[MAXN][MAXN];//原图 15 int map[MAXN][MAXN];//宝藏间的最短距离 16 int dist[MAXN][MAXN];//宝藏到边界的距离 17 int dd[MAXN];//宝藏到达边界的最短距离 18 bool mark[MAXN][MAXN]; 19 int dp[1<<14][14]; 20 int n,m,k; 21 int dir[4][2]={
{-1,0},{
1,0},{
0,-1},{
0,1}}; 22 23 void spfa(int num) 24 { 25 memset(mark,false,sizeof(mark)); 26 for(int i=0;i
>que; 29 que.push(make_pair(point[num].x,point[num].y)); 30 if(dist[point[num].x][point[num].y]==-1)return; 31 dist[point[num].x][point[num].y]=0; 32 while(!que.empty()){ 33 int x=que.front().first,y=que.front().second; 34 que.pop(); 35 mark[x][y]=false; 36 if(x==0||x==(n-1)||y==0||y==(m-1)){ 37 dd[num]=min(dd[num],dist[x][y]); 38 } 39 for(int i=0;i<4;i++){ 40 int xx=x+dir[i][0],yy=y+dir[i][1]; 41 if(xx>=0&&xx
=0&&yy
View Code

 

转载地址:http://ymtga.baihongyu.com/

你可能感兴趣的文章
java通过UUID生成16位唯一订单号
查看>>
001-web基本程序搭建
查看>>
函数指针和指针函数
查看>>
借力AI 极验如何构建下一代业务安全?
查看>>
用Python制作迷宫GIF
查看>>
支付宝推出基于区块链跨境支付,巨头入场小企业将面临灭顶之灾
查看>>
从事互联网行业,怎样才能快速掌握一门编程语言呢?
查看>>
React native 第三方组件 React native swiper
查看>>
接口幂等设计
查看>>
编程入门指南
查看>>
移动端的自适应方案—REM
查看>>
你真的懂volatile吗
查看>>
Android 编译时注解-提升
查看>>
说说 Spring AOP 中 @Aspect 的高级用法
查看>>
Workbox CLI中文版
查看>>
贝聊亿级数据库分库分表实践
查看>>
同时连接gitlab和github
查看>>
vuex源码分析
查看>>
tornado+datatables分页
查看>>
集成 Kubernetes 与 Cloud Foundry,IBM自有一套
查看>>