nssl1150,jzoj5309-密室【分层建图,SPFA】

正题

jzoj题目链接:https://jzoj.net/senior/#main/show/5309


题目大意

有n个点,m条边,k种钥匙。有些点分布了钥匙,有些边需要一些钥匙才可以通过,求1到n的最短路。


解题思路

将图分成2k2k层,每一层用二进制表示不同的钥匙情况。然后根据不同情况连边就好了。
(双端队列bfs会莫名其妙WA一个点)


code

#include<cstdio>
#include<queue>
#include<cstring>
#define p(x,y) x*n+y
#define N 5110
#define M 6110
#define MS 1024
using namespace std;
struct node{int to,next;bool w;
}a[MS*(N+M)];
int n,m,k,x,y,w,MAX_State,d[N*MS],tot,ls[N*MS];
bool v[N*MS];
queue<int> q;
void addl(int x,int y,int w)//加边
{a[++tot].to=y;a[tot].next=ls[x];a[tot].w=w;ls[x]=tot;
}
void bfs()//SPFA
{memset(d,127/3,sizeof(d));q.push(p(0,1));d[p(0,1)]=0;v[p(0,1)]=1;while(!q.empty()){int x=q.front();q.pop();for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(d[x]+a[i].w<d[y]){d[y]=d[x]+a[i].w;if(!v[y]){v[y]=true;q.push(y);}}}v[x]=false;}
}
int main()
{scanf("%d%d%d",&n,&m,&k);MAX_State=1<<k;for(int i=1;i<=n;i++)for(int j=1;j<=k;j++){scanf("%d",&x);if(x){for(int state=0;state<MAX_State;state++)addl(p(state,i),p((state|(1<<(j-1))),i),0);//不同情况的获取钥匙}}for(int i=1;i<=m;i++){int state=0;scanf("%d%d",&x,&y);for(int i=1;i<=k;i++){scanf("%d",&w);state+=w<<(i-1);}for(int j=0;j<MAX_State;j++)if((j&state)==state)addl(p(j,x),p(j,y),1);//满足钥匙的情况连边}bfs();int ans;ans=2147483647;for(int j=0;j<MAX_State;j++)ans=min(ans,d[p(j,n)]);//因为没有要求钥匙状态所以取最小的if(ans>10000) printf("No Solution");else printf("%d",ans);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在面试中介绍自己的项目经验

转载自 如何在面试中介绍自己的项目经验 在面试时&#xff0c;经过寒暄后&#xff0c;一般面试官会让介绍项目经验 。常见的问法是&#xff0c;说下你最近的&#xff08;或最拿得出手的&#xff09;一个项目。 根据我们的面试经验&#xff0c;发现有不少候选人对此没准备&am…

Configuration Extensions - 简化配置,让你配置支持变量

在开发“RabbitCloud”项目时&#xff0c;使用配置文件发现会有很多重复值&#xff0c;所以我基于”Microsoft.Extensions.Configuration”写了一个扩展库&#xff0c;来丰富对配置的支持。实际案例——“RabbitCloud”之前&#xff0c;我是这样的因为公司ip和家里机器的ip不一…

如何配置frp到linux服务器和windows本地,服务端支持自启动

大家好&#xff0c;我是雄雄&#xff0c;如果你觉得文章还不错的话&#xff0c;欢迎在文末点赞和评论。 前言 最近这段时间都在开发微信服务&#xff08;公众&#xff09;号相关技术&#xff0c;对于写了好几年的后端程序的我来说&#xff0c;开发小程序和服务号&#xff0c;刚…

插入链接

简单的插入链接&#xff0c;直接提供跳转页面项 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><a href"oneclick.html">点我一下&#xff0c;有惊喜</a>…

ssl提高组周六模拟赛【2018.9.15】

前言 这次那了一个和fuW并列的第一&#xff0c;然而似乎都不是很难。(因为第1题有bug所以满分不了) 成绩 只放Rank 1∼10Rank1∼10RankRankPersonPersonScoreScore112015hjw" role="presentation" style="position: relative;">2015hjw2015hjw19…

java面试线程必备知识点,怼死面试官,从我做起

转载自 java面试线程必备知识点&#xff0c;怼死面试官&#xff0c;从我做起 |--多线程一定好么&#xff1f; cpu密集不好 io密集好 |--如何减少上下文切换&#xff1a; 无锁并发&#xff08;数据id根据Hash分段&#xff09;、CAS、最少线程 |--java线程避免死锁&#xff…

错误代码:88000, 错误信息:without comment privilege hint: [7oJ0533w689] rid: 630432cd-15944cf6-083e04fc

大家好&#xff0c;我是雄雄。 问题复现 这个问题&#xff0c;是我在操作&#xff1a;给微信公众平台上添加图文到草稿箱时&#xff0c;遇到的。 报错信息如下&#xff1a; {"errcode":88000,"errmsg":"without comment privilege hint: [7oJ0533w6…

asp.net core AuthenticationMiddleware 在WebApi中的的使用

在.net framework 4.5架构下使用认证&#xff08;Authentication&#xff09;授权(Authorization)。IIS使用HttpModule进行认证&#xff08;Authentication&#xff09;&#xff0c;我们可以选择自己实现认证方式并在web.config中配置&#xff0c;当然也可以选择IIS默认提供的几…

初衷以及目的

因为我学的是软件工程专业的嘛&#xff0c;当初高考误打误撞选择了这门专业&#xff0c;也算是满意吧&#xff0c;毕竟自己对计算机还是挺感兴趣的。 很早以前我就想把计算机学好&#xff0c;希望用华丽的编程技术去创造有趣的游戏&#xff0c;但一直因为各种因素直到高三我才…

P1032-字串变换【bfs】

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP1032 题目大意 给若干个变化规则&#xff0c;表示A中的axa_xax​子串可以变化为bxb_xbx​中的子串&#xff0c;求至少要多少次变化才可以变为B子串。 解题思路 暴力广搜用mapmapmap库判重。 codecod…

WebSocket In ASP.NET Core(二)

Introduce上篇博文中&#xff0c;介绍了WebSocket的基本原理&#xff0c;以及一个简单的Demo用来对其有一个大致的认识。这篇博文讲的是我们平常在网站上可能会经常遇到的——实时聊天&#xff0c;本文就是来讲在.NET-Core使用WebSocket来实现一个“乞丐版”的在线实时聊天Demo…

不支持POST请求方法,支持以下GET、

大家好&#xff0c;我是雄雄。 刚刚在用**FeignClient**注解的时候&#xff0c;报了个错&#xff0c;不支持POST请求方法&#xff0c;支持以下GET、。 字面意思上看&#xff0c;好像是让把请求方式从post改成get. 但是&#xff0c;我检查了下我的代码&#xff0c;get提交方式…

Java面试之数据库面试题

转载自 Java面试之数据库面试题 1、触发器的作用&#xff1f; 触发器是一中特殊的存储过程&#xff0c;主要是通过事件来触发而被执行的。它可以强化约束&#xff0c;来维护数据的完整性和一致性&#xff0c;可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级…

P3701 -「伪模板」主席树【网络流,最大流】

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP3701 题目大意 给出若干个人的克制关系 给出两边每个人的种类和血量。当两个人pkpkpk后&#xff0c;双方各−1hp-1hp−1hp&#xff0c;同一边的YYYYYYYYY可以给每个同一方的J1hpJ\ 1hpJ 1hp&#xf…

给数组调换顺序

#include<stdio.h> main(){int i,j,t,a[]{1,2,3,4,5};i0;j4;while(j>i){ta[i];a[i]a[j];a[j]t;i;j--;}for(i0;i<5;i){printf("%d ",a[i]);} }1、注意a【】里面的值&#xff0c;后面有大括号可以不写了&#xff0c;写小了反而错了&#xff0c;如果要写后…

微服务如何实现各个模块之间相互调用

大家好&#xff0c;我是雄雄&#xff0c;现在是:2022年8月23日21:08:53 前言 在做微服务项目时&#xff0c;我们可能都会遇到这样的情况&#xff0c;那就是A服务需要调用B服务中的某个接口&#xff0c;那有这样的需求时&#xff0c;我们应该怎么处理呢&#xff1f; 实现 使用…

2017年秋招美团Java程序员开发,看我如何拿到offer

转载自 2017年秋招美团Java程序员开发&#xff0c;看我如何拿到offer 本人是一名本科毕业非计算机专业的程序员&#xff0c;面了阿里&#xff0c;结果没过&#xff0c;最后面上了美团&#xff0c;热乎乎的面经&#xff0c;昨天面的美团&#xff0c;虽然面完了HR面&#xff0c…

ASP.NET Core 运行原理剖析

1.1. 概述在ASP.NET Core之前&#xff0c;ASP.NET Framework应用程序由IIS加载。Web应用程序的入口点由InetMgr.exe创建并调用托管。以初始化过程中触发HttpApplication.Application_Start()事件。开发人员第一次执行代码的机会是处理Application_StartGlobal.asax中的事件。在…

nssl1155-遨游【二分答案,SPFA】

正题 题目大意 有若干个省&#xff0c;每个省有些城市&#xff0c;每个省有优惠Xi%X_i\%Xi​%&#xff0c;若在i省内的道路就优惠Xi%X_i\%Xi​%&#xff0c;若在i到j省的道路就优惠(Xi%Yi%)2\frac {(X_i\%Y_i\%)}22(Xi​%Yi​%)​&#xff0c;求一个区间[L,R][L,R][L,R]边权在…

使用wxJava开发微信服务(公众)号,实现新建素材的功能

大家好&#xff0c;我是雄雄。 前言 微信服务&#xff08;公众号&#xff09;号开发&#xff0c;前面已经整理过了几篇文章了&#xff0c;如下&#xff1a; java实现微信服务&#xff08;公众&#xff09;号用户关注时&#xff0c;获取openid&#xff0c;安全模式下的加密解密…