E - Escape from the Island(最短路+dp)
E - Escape from the Island
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<bitset>
#include<random>
#include<bitset>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<unordered_set>
using namespace std;
typedef long long ll;
typedef pair<ll,int> pli;
typedef pair<int,int> pii;
const int N=100010,M=200010;
int h[N],e[M],ne[M],idx;
int d[N];
bool nd[N];
void add(int a,int b)
{e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int f[N][55];
int n,m,k;
void init()
{memset(h,-1,sizeof(int)*(n+1));idx=0;memset(d,0,sizeof(int)*(n+1));memset(nd,0,sizeof(bool)*(n+1));for(int i=1;i<=n;i++)for(int j=0;j<=k;j++)f[i][j]=0x3f3f3f3f;
}
queue<pii> q;
void update(int a,int b,int c,int d)
{if(f[c][d]==0x3f3f3f3f)f[c][d]=f[a][b]+1,q.push({c,d});
}
void bfs()
{for(int i=0;i<=k;i++)f[n][i]=0,q.push({n,i});while(q.size()){auto [u,t]=q.front();q.pop();if(t>0)for(int i=h[u];i!=-1;i=ne[i])update(u,t,e[i],t-1);else{ // t==0for(int i=h[u];i!=-1;i=ne[i]){ //0代表顺着水流 1代表逆这水流if(i%2==0) continue; //倒着更新需要逆着水流 --d[e[i]];if(!d[e[i]])for(int j=0;j<=k;j++)update(u,t,e[i],j);}if(nd[u])for(int j=0;j<=k;j++)update(u,t,u,j);}}
}
int main()
{IO;int T=1;cin>>T;for(int ca=1;ca<=T;ca++){cin>>n>>m>>k;init();for(int i=1;i<=m;i++){int u,v;cin>>u>>v;add(u,v),add(v,u);++d[u];}for(int i=1;i<=n;i++)if(!d[i]) nd[i]=1;//没有出度bfs();printf("Case #%d:\n",ca);for(int i=1;i<=n;i++)printf("%d\n",(f[i][0]==0x3f3f3f3f?-1:f[i][0]));}return 0;
}
E - Escape from the Island(最短路+dp)相关推荐
- 【牛客 - 370B】Rinne Loves Graph(分层图最短路 或 最短路dp)
题干: Island 发生了一场暴乱!现在 Rinne 要和 Setsuna 立马到地上世界去. 众所周知:Island 是有一些奇怪的城镇和道路构成的(题目需要,游戏党勿喷),有些城镇之间用双向道路 ...
- P1772 [ZJOI2006]物流运输 最短路+DP
思路:最短路+DP 提交:1次 题解: $f[i]$表示到第$i$天的最小代价,我们可以预先处理出$i,j$两天之间(包括$i,j$)都可通行的最短路的代价记做$s[i][j]$,然后有$f[i]=m ...
- 【HYSBZ - 2763 】飞行路线 (分层图最短路,最短路dp)
题干: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价 ...
- BZOJ 1003 物流运输 最短路+dp
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1003 题目大意: 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才 ...
- CodeForces - 1407E Egor in the Republic of Dagestan(最短路+dp)
题目链接:点击查看 题目大意:给出 n 个点和 m 条边的有向图,每条边的长度为 1 ,有一个属性由 0 或 1 表示,现在需要给每个节点赋值,使得: 如果点 u 的权值为 0 ,则 u 只能走 ( ...
- 【BZOJ1880】[Sdoi2009]Elaxia的路线 最短路+DP
[BZOJ1880][Sdoi2009]Elaxia的路线 Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起 ...
- hdu 1142 最短路 + DP
这题题意好纠结,半天没看懂,后来打完过不了样例,让海峰读题,最后按他的思路打完了,居然在他之前AC,哈哈~ 读懂了题目还是挺简单的,首先求出所有点到终点的最短路,然后DP一下,就能求出路径条数. /* ...
- 2020牛客寒假算法基础集训营3——J.牛牛的宝可梦Go【最短路 DP(01背包) 复杂度优化】(附优化分析)
题目传送门 题目描述 牛牛所在的W市是一个不太大的城市,城市有n个路口以及m条公路,这些双向连通的公路长度均为1,保证你可以从一个城市直接或者间接移动到所有的城市.牛牛在玩宝可梦Go,众所周知呢,这个 ...
- Problem C. Increasing Shortest Path【贪心 最短路-DP】
题意 给一个图,nnn 个点 mmm 条边,qqq 次询问,求从 iii 到 jjj 的走过条数不超过 ccc 的最短路的长度,走路的时候过的边的长度必须是不减的 数据范围:150150150 点,3 ...
最新文章
- rsync使用sudo权限
- 浮点数存储格式学习:找到非规格数中最大和最小的数
- 最短路 poj1125
- react实现svg实线、虚线、方形进度条
- LiveVideoStack线上分享第三季(九):《街舞》《长安十二时辰》背后的文娱大脑...
- zigbee是什么,为什么说它最适合智能家居设备
- 科学地花钱:基于端智能的在线红包分配方案
- BZOJ-1066 蜥蜴 最大流+拆点+超级源超级汇
- 基于情感词典的python情感分析
- 用Python玩转数据(一)
- 驱动开发笔记3—SSDT表详解
- C#求解一元二次方程的根
- oracle 10g xe 12505,ORACLE10g的ORA-12505问题解决方法
- MySQL创建数据表的三种方式
- [windows]远程桌面用户管理
- 2010年10月20日
- 央视影音大屏版apk下载_央视影音TV版
- PHP基本语法--php基础最详细教程
- 小米5无线显示如何连接到服务器,小米电视无线显示怎么用?详细操作方法
- NanoPC-T4|Android-Q LCD驱动与显示(eDP)
热门文章
- cocoscreator editbox 只允许数字_《Cocos Creator游戏实战》做一个数字调节框
- android t跳转到fragment,Android 使用EventBus进行Fragment和Activity通信
- vue 插入word模板 项目_10 分钟为你的 vue 项目编写代码文档
- 浅谈Web前端安全策略xss和csrf,及又该如何预防?
- [SpringBoot2]web场景_静态资源规则与定制化
- [mybatis]动态sql_sql_抽取可重用的sql片段
- C++string容器应用举例
- Invitation Cards POJ - 1511 SPFA(dijkstra+反向建图+邻接表(下标过大)+输入输出用stdio(iostream超时))
- word List 33
- P3355 骑士共存问题(网络流)