博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pku3311 Hie with the Pie(spfa+状态压缩)
阅读量:5298 次
发布时间:2019-06-14

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

题意:给定一个n+1个点的有向图和起点,求经过其余n个点然后回到起点的最短路径。。(n<=10)

分析:看到这么小的数据,就知道不是普通的最短路了,首先,n 这么小,应该联想到的应该是状态压缩吧,每一个位表示经过了哪一个点。。。

dp[i][j] 表示到达点i 状态为j 时的最短路径长度,一开始忽略了一点,就是更新过的点,完全有可能再更新的,所以不能单纯记录是否更新过该状态,所以就想到了用spfa,将更新过的点入队,,继续拓展……

View Code
#include
#include
#include
using namespace std;const int N = (1 << 11) + 10;int map[15][15], n;int dp[15][N];bool vis[15][N];struct node{ int v,state; node(){} node(int v,int state):v(v),state(state){}};void spfa(){ memset(vis,false,sizeof(vis)); memset(dp,-1,sizeof(dp)); dp[0][0]=0; queue
Q; Q.push(node(0,0)); vis[0][0]=true; while(!Q.empty()) { node tmp=Q.front(); Q.pop(); vis[tmp.v][tmp.state]=false; for(int i=0;i
dp[tmp.v][tmp.state]+map[tmp.v][i]) { dp[i][tmp.state|(1<

 

 

转载于:https://www.cnblogs.com/nanke/archive/2012/08/29/2661591.html

你可能感兴趣的文章
GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例
查看>>
团队作业
查看>>
数据持久化时的小bug
查看>>
mysql中key 、primary key 、unique key 与index区别
查看>>
bzoj2257
查看>>
Linux查看文件编码格式及文件编码转换<转>
查看>>
Leetcode: Find Leaves of Binary Tree
查看>>
Vue 模板解释
查看>>
http://www.bootcss.com/
查看>>
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
JavaScript动画打开半透明提示层
查看>>