题目

http://www.51nod.com/Challenge/Problem.html#problemId=1326


解题思路

我们要使到nnn的时间恰好为ttt,那么必然存在一个环,在到达了某一个点后,重复走这个环。
d[i][j]d[i][j]d[i][j]表示从000到iii节点走了最小的k+p∗2dk+p*2dk+p∗2d,ddd是当前边的长度,kkk是进入环前做的最短路。
那么我们只需要判断d[n][t%(2d)]<=td[n][t\%(2d)]<=td[n][t%(2d)]<=t就可以。


代码

#include<cstdio>
#include<cstring>
#include<queue>
#include<string>
#define mp(x,y,z) make_pair(x,make_pair(y,z))
#define ll long long
#define rr register
using namespace std;
const int N=110,M=20010;
struct node{int y,z,next;}a[N*M];
int n,m,T,tot,head[N]; ll t,d[N][M];
bool flag,v[N][M];
inline int read(){int p=0; char c=getchar(); while (!isdigit(c)) c=getchar(); while (isdigit(c)) p=(p<<3)+(p<<1)+c-48,c=getchar();  return p;
}
inline void add(int x,int y,int z){a[++tot]=(node){y,z,head[x]}; head[x]=tot;}
inline void dij(int qh){memset(d,0x3f,sizeof(d)),memset(v,0,sizeof(v)); priority_queue<pair<ll,pair<int,int> > >q; d[1][0]=0; q.push(mp(0,1,0)); while(q.size()){int x=q.top().second.first,mx=q.top().second.second; q.pop();if (v[x][mx]) continue; else v[x][mx]=1; for(rr int i=head[x];i;i=a[i].next){int y=a[i].y,my=(a[i].z+mx)%qh; if (d[y][my]>d[x][mx]+a[i].z) d[y][my]=d[x][mx]+a[i].z,q.push(mp(-d[y][my],y,my)); }}
}
int main(){T=read(); while(T--){flag=tot=0,memset(head,0,sizeof(head)); n=read(),m=read(),scanf("%lld",&t); for(rr int i=1,x,y,z;i<=m;i++) x=read(),y=read(),z=read(),add(x+1,y+1,z),add(y+1,x+1,z); for(rr int i=head[n];i;i=a[i].next){dij(a[i].z*2); if (d[n][t%(a[i].z*2)]<=t) {flag=1; break;}}if (flag) printf("Possible\n"); else printf("Impossible\n"); }
}

#同余最短路# [51nod] 遥远的旅途相关推荐

  1. 【51nod 1326】遥远的旅途【最短路】

    题目: 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1326 给出一张nnn个点mmm条边的无向图,询问是否有一条从1到nnn ...

  2. 【算法笔记】一步一步推出来的同余最短路优化思路(千字长文,超详细)

    整理的算法模板合集: ACM模板 目录 同余最短路 例题1:luogu P3403 跳楼机 例题2:luogu P2371 [国家集训队]墨墨的等式 例题3:luogu P2662 牛场围栏 同余最短 ...

  3. 牛客 - Yuki with emofunc and playf(同余最短路)

    题目链接:点击查看 题目大意:初始时给出一个数字 y=1y=1y=1 和一个辅助数字 xxx,每回合可以执行两种操作中的一种: y=y∗10y=y*10y=y∗10 y=y+x−1y=y+x-1y=y ...

  4. P2662 牛场围栏(同余最短路)

    P2662 牛场围栏 思路 假设我们已经知道同余最短路是什么了,这里就不再过多赘述. 我们要尽可能地得到更多地课建成地边,那么我们必然要选一个basebasebase相对小的,因此我们可以对所有的棍子 ...

  5. 同余最短路(P3403 跳楼机)

    同余最短路 前置 给定m个数,这m个数可以重复取,问最大的这m个数不能拼成的数,或者给定一定范围,范围里有多少个数是这m个数可以拼成的,对于这种问题我们可以考虑同余最短路的算法. P3403 跳楼机 ...

  6. 湖南大学第十六届程序设计竞赛 B Yuki with emofunc and playf 同余最短路

    传送门 文章目录 题意: 思路: 题意: 初始有一个数111,你每次可以将其∗10*10∗10或者+(x−1)+(x-1)+(x−1),现在给你xxx,问最少经过多少步能到达nnn. 1≤n≤1e6, ...

  7. HDU - 6071 Lazy Running 同余最短路 + 分层

    传送门 题意: 给定四个点构成一个环,给出四个点之间的距离,让后从222号点出发,最终回到222号点,求经过的距离>=k>=k>=k的最小距离. 思路: 由于从222开始,最终在22 ...

  8. P2371 [国家集训队]墨墨的等式 同余最短路

    传送门 题意: 思路: 一个同于最短路的板子题,初始的时候值为0,所以设dis[0]=0dis[0]=0dis[0]=0,让后选择一个最小的a[i]a[i]a[i]作为basebasebase,跑一遍 ...

  9. 【学习笔记】同余最短路

    同余最短路是用来解决一类 ∑i=1naixi∈[L,R]\sum_{i=1}^n a_ix_i\in[L,R]∑i=1n​ai​xi​∈[L,R] 问题的方法. 其中 L,RL,RL,R 值非常大,而 ...

最新文章

  1. gunicorn源码分析
  2. SSH: 使用ssh推送github代码
  3. Flutter开发之WebView加载网页(24)
  4. 2020 年告别办公室!
  5. 10 个最佳的支持触摸操作的 JavaScript 框架
  6. 递归法:财务金额漏掉1笔或者几笔(排列组合)
  7. 阿里云域名解析设置自定义DNS服务器
  8. 【Java框架】CSFramework框架的应用——简易聊天室
  9. 科学道德与学风-2021雨课堂答案-第3章
  10. 第七周博客作业西北师范大学|李晓婷
  11. 如何用Java分配一段连续的1G的内存空间?需要注意些什么?
  12. NVIDIA 图像显卡参数列表
  13. 计算机网络实验-网络嗅探器
  14. 无纸化考试系统(CS)
  15. VB中的二维数组输出的定位
  16. 磁盘配额(Quota)磁盘阵列(RAID)逻辑卷轴管理器(LVM)学习记录
  17. 大数据用什么软件python_大数据软件 python
  18. 【论文写作】Word文档中的MathType公式大小不一导致版面很难看完美解决方法
  19. CTYZ的树论赛(P5557 旅行/P5558 心上秋/P5559 失昼城的守星使)
  20. NGINX的架构(译)

热门文章

  1. n维椭球体积公式_2020中考物理知识汇总:公式大全
  2. error: need 'typename' before '.......'的解决方法
  3. 张亚飞《.Net for Flash FMS》读后笔记二
  4. B-树和B+树的区别
  5. 知识图谱技术原理介绍
  6. 2013年3月TIOBE编程语言排行榜,Ruby超越Perl
  7. 2013年3月《Testing Experience》电子杂志下载
  8. java中ofd文件转pdf_ofd格式如何转换成word
  9. 简单的类实现接口的方法
  10. 你可曾了解过,数据分析师与商业数据分析师?