https://www.luogu.org/problemnew/show/P3489

普通的最短路,不过我觉得这个复杂度按道理来说边数不应该是m*2^13吗,不知道是数据比较水还是实际上能证明复杂度低一些。

代码如下

#include<bits/stdc++.h>
using namespace std;
const int maxn = 210;
#define pa pair<int,int>
int n,m,p,k;
int dis[maxn][8200]={},kn[maxn]={};
bool vis[maxn][8200]={};
priority_queue< pa , vector< pa > , greater< pa > >q;
struct en{
int y,v,t,next;
}e[8000];
int head[maxn]={},tot=0;
void init(int x, int y, int v, int t){
e[++tot].next=head[x]; e[tot].y=y;
e[tot].t=t; e[tot].v=v; head[x]=tot;
}
void dji(){
q.push(make_pair(0,8200+kn[1]));dis[1][kn[1]]=0;
int flag=0,ans=dis[2][0];
while(!q.empty()){
int x=q.top().second;
int knf=x%8200;x/=8200;q.pop();
if(x==n){flag=1;cout<<dis[x][knf]<<endl;break;}
if(vis[x][knf])continue;
vis[x][knf]=1;
for(int i=head[x];i;i=e[i].next){
int y=e[i].y;
if((e[i].v|knf)==knf){
if(e[i].t+dis[x][knf]<=dis[y][knf|kn[y]]){
dis[y][knf|kn[y]]=e[i].t+dis[x][knf];
vis[y][knf|kn[y]]=0;
q.push( make_pair( dis[y][knf|kn[y]],y*8200+(knf|kn[y]) ) );
}
}
}
}
if(!flag)cout<<-1<<endl;
}
int main(){
scanf("%d%d%d%d",&n,&m,&p,&k);
memset(dis,63,sizeof(dis));
for(int i=1;i<=k;++i){
int x,y,z; scanf("%d%d",&x,&y);
for(int j=1;j<=y;++j){
scanf("%d",&z); kn[x]|=1<<(z-1);
}
}
for(int i=1;i<=m;++i){
int x,y,z,t,w,v=0; scanf("%d%d%d%d",&x,&y,&t,&z);
for(int j=1;j<=z;j++){
scanf("%d",&w); v|=1<<(w-1);
} init(x,y,v,t); init(y,x,v,t);
}
dji();
return 0;
}

  

Luogu P3489 [POI2009]WIE-Hexer 最短路的更多相关文章

  1. 1139: [POI2009]Wie

    1139: [POI2009]Wie https://www.lydsy.com/JudgeOnline/problem.php?id=1139 分析: Dijkstra.状压最短路,dis[i][j ...

  2. Luogu P2483 【模板】k短路([SDOI2010]魔法猪学院)

    说实话,看到这道题的洛谷评级我傻了(传说中的最高难度) 然后看完题目才确定这真的是一道k短路的裸题. 也就敲了个A*吧,15分钟竟然没有调试一遍过. 欧洲玄学. 看题目,主要是找几条从1走到n的路加起 ...

  3. Luogu P5122 [USACO18DEC]Fine Dining 最短路

    先跑一遍n为起点最短路,再新开一个点,向有干草垛的点连一根边权为d[u]-w的有向边(很重要..我当时连的无向边,然后我死了.),相当于用价值抵消一部分边权, 然后以这个新的点为起点跑最短路就好了.. ...

  4. bzoj1139:[POI2009]Wie

    传送门 状压dp,最短路 spfa似乎特别慢 代码: #include<cstdio> #include<iostream> #include<algorithm> ...

  5. luogu 5468 [NOI2019]回家路线 最短路/暴力

    想写一个 70 pts 算法,结果数据水,直接就切了 最短路: // luogu-judger-enable-o2 #include<bits/stdc++.h> using namesp ...

  6. Luogu P1073 最优贸易(最短路)

    P1073 最优贸易 题意 题目描述 \(C\)国有\(n\)个大城市和\(m\)条道路,每条道路连接这\(n\)个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这\(m\)条道路中有 ...

  7. Luogu P1462 通往奥格瑞玛的道路(最短路+二分)

    P1462 通往奥格瑞玛的道路 题面 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己 ...

  8. [POI2009]Wie

    题目 BZOJ 虽然是解压题但也学到了简洁的码风 做法 \(dijkstra\)跑动规 My complete code #include<bits/stdc++.h> #include& ...

  9. Luogu 3479 [POI2009]GAS-Fire Extinguishers

    补上了这一道原题,感觉弱化版的要简单好多. 神贪心: 我们设$cov_{x, i}$表示在$x$的子树中与$x$距离为$i$的还没有被覆盖到的结点个数,设$rem_{x, i}$表示在$x$的子树中与 ...

随机推荐

  1. Bean管理学习笔记

    1.BeanFactory 介绍 1.1 首先什么是Bean? 1.Bean在Spring技术中是基于组件 2.他是Spring容器管理的最基本最常见的单元.在spring的应用场合中,bean可以是 ...

  2. MongoDB 增删改查 Shell使用及操作

    下载链接:https://robomongo.org/download 安装步骤省略,下一步下一步... 图形界面,连接默认,取个名字就行. 连接成功,可以愉快的使用了,不用总是敲命令了,简洁方便,多 ...

  3. pycharm从本地离线添加模块

    豆瓣的源: http://pypi.douban.com/simple pip install matplotlib -i http://pypi.douban.com/simple --truste ...

  4. Office 365 的安装与激活

    (1)Office 365的安装,本处使用的是Office Tool Plus. (2)等待安装完成 (3)重头戏激活 , 使用命令行方式 (不推荐) 以下内容,新建文本文件,然后保存为.bat,再以 ...

  5. 微服务与SpringCloud简介

    A.官网 https://spring.io/projects/spring-cloud B.简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用 ...

  6. AndroidStudio中Run按钮是灰色的解决方法

    在model下拉框中选择app.如果下拉框中没有app,(没有工程名),那么请先去设置: Android Studio 3.3.0 File->sync project with gradles ...

  7. Laravel5.6---搜索查询 自带paginate()分页 get传参

    laravel的paginate()分页,如果用post传参,点击第二页时会默认使用get,就会返回原始数据了 需要把查询数据get方式也放到paginate()分页参数中 一.路由 Route::g ...

  8. [LeetCode] 581. 最短无序连续子数组 ☆

    描述 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, 6, 4, 8 ...

  9. MySQL Index--InnoDB引擎的主键索引

    查看表主键信息 ## 查看表主键信息 SELECT t.TABLE_NAME, t.CONSTRAINT_TYPE, c.COLUMN_NAME, c.ORDINAL_POSITION FROM IN ...

  10. APC (Asynchronous Procedure Call)

    系统创建新线程时,会同时创建与这个线程相关联的队列,即异步过程调用(APC)的队列. 一些异步操作可以通过加入APC来实现,比如我现在学习的IO请求/完成. BOOL ReadFileEx( HAND ...