【luogu1119】灾后重建(加强版Floyd)
来源:互联网 发布:城市交通综合网络规划 编辑:程序博客网 时间:2024/06/06 05:52
题目:
我是超链接
题解:
加一个村庄就把这个村庄当成中转修改一下之前的最短路,0x3f是我认识的第三个很大的数
代码:
#include <cstdio>#include <algorithm>#include <iostream>#include <cstring>using namespace std;struct hh{ int x,y,t;}xx[50005];int f[205][205],t[205];int main(){ int n,m,i,Q,a,b,c,k,j,ii; scanf("%d%d",&n,&m); for (i=1;i<=n;i++) scanf("%d",&t[i]); memset(f,0x3f,sizeof(f)); for (i=1;i<=m;i++) { scanf("%d%d%d",&a,&b,&c);a++;b++; f[a][b]=f[b][a]=c; } scanf("%d",&Q);int QQ=Q;i=1; while (Q--) { scanf("%d%d%d",&xx[i].x,&xx[i].y,&xx[i].t); xx[i].x++; xx[i].y++;i++; } int zl=1,sj=1; for (k=1;k<=n;k++) { f[k][k]=0; while (sj<=QQ && xx[sj].t<t[k])//建这个村庄之前的可以输出了 { if (f[xx[sj].x][xx[sj].y]>1061109565 || xx[sj].x>=k || xx[sj].y>=k) printf("-1\n"); else printf("%d\n",f[xx[sj].x][xx[sj].y]); sj++; } if (sj>QQ) break; for (i=1;i<=n;i++)//虽然这个村庄没有修好,但是最短路还是要修改的,因为k以后就不当中转了 for (j=1;j<=n;j++) f[i][j]=min(f[i][j],f[i][k]+f[k][j]); } while (sj<=QQ) { if (f[xx[sj].x][xx[sj].y]>1061109565) printf("-1\n"); printf("%d\n",f[xx[sj].x][xx[sj].y]); sj++; } }
阅读全文
1 0
- 【luogu1119】灾后重建(加强版Floyd)
- 洛谷1119灾后重建(floyd)
- 洛谷 P1119 灾后重建(Floyd)
- 洛谷P1119 灾后重建(floyd+思维)
- 洛谷 1119 灾后重建 Floyd
- floyd——洛谷P1119 灾后重建
- 水题笔记:luogu 1119 灾后重建 [Floyd]
- 洛谷 1119 灾后重建 生成树+Floyd 解题报告
- 灾后重建题解
- 【u110】灾后重建
- 灾后重建
- 灾后重建
- 灾后重建
- [P1119]灾后重建
- 灾后重建
- P1119 灾后重建
- 洛谷【P1119】 灾后重建
- 洛谷1119 灾后重建
- 笔记
- Go语言安装第三方库
- OpenStack在Uubutu上的一键安装
- 一种新的ResNet思路:Learning Identity Mapping with Residual Gates论文笔记
- struts2的struts.properties配置文件
- 【luogu1119】灾后重建(加强版Floyd)
- “Hello World”应用程序
- case代码综合的问题(full_case和parallel_case)
- Closest Common Ancestors 【LCA转RMQ】
- Git常用命令总结
- mount、umount、fuser命令使用小结
- Magento 2中文手册教程
- 亿级Web系统搭建:单机到分布式集群
- 索引与视图的创建与应用