题目链接

https://www.lydsy.com/JudgeOnline/problem.php?id=1097

思路

kk很小,考虑状压。

预处理出从11~(k+1)(k+1)出发,到其他点的距离,令fsta,ifsta,i表示走过的点状态为stasta,最后一个到达的点为ii,所需要行走的最短举例,操作起来还是有很多要注意的地方的,具体见代码。

代码

#include <cstdio>
#include <queue>
#include <cstring>const int maxn=20000;
const int maxm=400000;
const int maxk=21;
const int inf=0x3f3f3f3f;int read()
{int x=0,f=1;char ch=getchar();while((ch<'0')||(ch>'9')){if(ch=='-'){f=-f;}ch=getchar();}while((ch>='0')&&(ch<='9')){x=x*10+ch-'0';ch=getchar();}return x*f;
}int n,m,k,pre[maxm+10],now[maxn+10],son[maxm+10],tot,val[maxm+10];
int dist[maxk+2][maxn+10],f[(1<<maxk)+10][maxk+2],vis[maxn+10],t;
int from[maxk+2];
std::queue<int> q;inline int ins(int a,int b,int c)
{pre[++tot]=now[a];now[a]=tot;son[tot]=b;val[tot]=c;return 0;
}inline int spfa(int s)
{int* d=dist[s];d[s]=0;q.push(s);vis[s]=1;while(!q.empty()){int u=q.front(),j=now[u];q.pop();while(j){int v=son[j];if(d[v]>d[u]+val[j]){d[v]=d[u]+val[j];if(!vis[v]){vis[v]=1;q.push(v);}}j=pre[j];}vis[u]=0;}return 0;
}int main()
{n=read();m=read();k=read();while(m--){int a=read(),b=read(),c=read();ins(a,b,c);ins(b,a,c);}t=read();for(int i=1; i<=t; ++i){int a=read(),b=read();from[b]|=1<<(a-1);}for(int i=2; i<=k+1; ++i){from[i]|=1;}memset(dist,63,sizeof dist);memset(f,63,sizeof f);for(int i=1; i<=k+1; ++i){spfa(i);f[1<<(i-1)][i]=0;}for(int sta=1; sta<1<<(k+1); ++sta){int flag=0;for(int i=2; i<=k+1; ++i){if((((1<<(i-1))&sta)==(1<<(i-1)))&&((sta^from[i])!=(sta-from[i]))){flag=1;break;}}if(flag){continue;}for(int i=1; i<=k+1; ++i){if(sta&(1<<(i-1))){int s=sta^(1<<(i-1));flag=0;for(int j=2; j<=k+1; ++j){if((((1<<(j-1))&s)==(1<<(j-1)))&&((s^from[j])!=(s-from[j]))){flag=1;break;}}if(flag){continue;}for(int j=1; j<=k+1; ++j){if(s&(1<<(j-1))){f[sta][i]=std::min(f[sta][i],f[s][j]+dist[j][i]);}}}}}int ans=inf;for(int i=1; i<=k+1; ++i){ans=std::min(ans,f[(1<<(k+1))-1][i]+dist[i][n]);}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/Canopus-wym/p/10376187.html

BZOJ 1097 [POI2007]旅游景点atr相关推荐

  1. [BZOJ1097][POI2007]旅游景点atr

    [BZOJ1097][POI2007]旅游景点atr 试题描述 FGD想从成都去上海旅游.在旅途中他希望经过一些城市并在那里欣赏风景,品尝风味小吃或者做其他的有趣的事情.经过这些城市的顺序不是完全随意 ...

  2. 【BZOJ-1097】旅游景点atr SPFA + 状压DP

    1097: [POI2007]旅游景点atr Time Limit: 30 Sec  Memory Limit: 357 MB Submit: 1531  Solved: 352 [Submit][S ...

  3. Python告诉你这些旅游景点好玩、便宜、人又少!

    (图片由CSDN付费下载自东方IC) 作者 | 猪哥 来源 | 裸睡的猪(ID:IT--Pig) 2019年国庆马上就要到来, 今年来点新花样吧, 玩肯定是要去玩的, 不然怎么给祖国庆生? 那去哪里玩 ...

  4. [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...

  5. 题解 T28305 【yizimi的旅游景点】

    题目链接这里!!! AC军团月赛题目地址这里!!!正比例函数的旅游景点 题目翻译 我依然不会告诉你题目的难度有一半是读题 其实就是给定一个图中一部分点,给定一部分边,先让你求这之中的最小生成树,然后再 ...

  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的旅游景点酒店预订网站设计

    项目功能: 系统分为前台和后台,系统主要分为如下模块: 旅游网站主要是利用可靠的技术实现游客信息管理的自动化.系统化.标准化,为旅行社或旅游公司针对客户信息制订出的经营构建了一个高效的信息管理系统.该 ...

  7. 旅游景点、住宿带餐饮一天一万多流水能做到吗?

    首先,住宿餐饮都是旅游景区的热门行业 退休后,我和老伴经常在外自驾游,对于景点的好坏,喜欢与不喜欢,其衡量的标准就有住宿和餐饮.这样说吧,距离景点近,饭菜干净,停车安全就行,至于价格不要太离谱就行.我 ...

  8. Python 分析国庆热门旅游景点,告诉你哪些地方好玩、便宜、人又少!

    作者 | 裸睡的猪 责编 | 屠敏 2019年国庆马上就要到来, 今年来点新花样吧, 玩肯定是要去玩的, 不然怎么给祖国庆生? 那去哪里玩?人少档次还高呢? 咱不是程序员嘛, 那就用数据分析下, 看看 ...

  9. 基于html+css+javascript+jquery+bootstarp响应式网页设计——大理我的家乡旅游景点

    家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套.浮动.margin.border.background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大 ...

最新文章

  1. appium+python自动化45-夜神模拟器连不上(adb server version (36) doesn't match this client (39); killing...)...
  2. tengine 调用php,nginx 或tengine 访问日志分割处理
  3. 一个老鸟发的公司内部整理的 Android 学习路线图 Markdown 版本
  4. IJCAI 2020 | 淡妆浓抹总相宜之人脸上妆
  5. mysql 换服务器_更换MYSQL后数据库连接问题
  6. VSCODE 一键编译运行
  7. 支付宝客户端java版_支付宝对接支付-JAVA版
  8. 卡巴斯基6.0最新授权文件[6.0.2.523可用]
  9. 中国虾养殖和捕捞现状分析,养殖产量成上升趋势「图」
  10. signal 11 linux,linux signal 11 是什么意思
  11. 星际争霸2 AI开发(持续更新)
  12. oracle让电脑变卡以及解决方法
  13. mac 更新13.1后使用AccessClient.app 闪退
  14. 统计双色球各个数字的中奖概率的脚本
  15. Ubuntu20.04切换阿里源镜像(清华源、网易源)
  16. 北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊原理(一):以太坊概述、账户、状态树、交易树和收据树
  17. 数字金字塔(保证两位数的数字也能排好)
  18. Android应用UI自动化测试(Python+appium之appium启动APP前配置的参数)
  19. JAVA 实现《泡泡堂基础版》游戏
  20. CnOpenData全国小区新冠病毒确诊病例数数据

热门文章

  1. Android系统KeyStore (AndroidKeyStore): 存储密钥
  2. JUC学习笔记及拓展
  3. [ShapeInferenceError] Mismatch between number of source and target dimensions. Source=1 Target=0
  4. 解决ActionBar中的不显示View控件
  5. java常用代码总结
  6. Java Spring MVC框架搭建(一)
  7. 20170904_C基础
  8. MySQL存储过程和函数(一)
  9. SQLServer跟踪相关
  10. 现在java就业前景怎么样?现在入行晚了吗