Cow Relays,过N条边的最短路
题目链接
题意:
找从a到b的经过N条边的最短路
分析:
有点板子。。。方法:矩阵存,然后有个类似快速幂的思想,然后再加上离散化就好了。
没啥写的,只能说说矩阵了,我用的方法是先枚举i,j再枚举k,当然大部分人还是喜欢用floyd的代码去写,其实是类似的,然后还有什么呢,就是注意初始化,然后稍微处理一下就好了,代码如下:
- #include <cstdio>
- #include <cstring>
- #include <string>
- using namespace std;
- const int maxn=+;
- const int maxm=+;
- int ed[maxm][maxm];
- int n;
- struct JZ{//矩阵
- int a[maxm][maxm];
- JZ(){
- memset(a,0x3f,sizeof(a));
- }
- JZ(int s){
- for(int i=;i<=n;i++)
- for(int j=;j<=n;j++)
- a[i][j]=ed[i][j];
- }
- friend JZ operator + (JZ a,JZ b){
- JZ c;
- for(int i=;i<=n;i++)
- for(int j=;j<=n;j++)
- for(int k=;k<=n;k++)
- c.a[i][j]=min(b.a[i][k]+a.a[k][j],c.a[i][j]);
- return c;
- }
- };
- int ha[maxn];
- int main(){
- memset(ed,0x3f,sizeof(ed));
- int N,m,s,e;
- scanf("%d%d%d%d",&N,&m,&s,&e);
- int js1,js2,js3;
- int js=;
- for(int i=;i<=m;i++){
- scanf("%d%d%d",&js3,&js1,&js2);
- if(!ha[js1]){
- js++;
- ha[js1]=js;
- }
- if(!ha[js2]){
- js++;
- ha[js2]=js;
- }
- ed[ha[js1]][ha[js2]]=ed[ha[js2]][ha[js1]]=min(ed[ha[js1]][ha[js2]],js3);
- }
- for(int i=;i<maxn;i++)
- if(ha[i])
- n++;
- bool f=;
- JZ D;
- for(JZ now();N;now=now+now){//有点类似快速幂的思想
- if(N&&&f){
- D=now;
- f=;
- }
- else if(N&)
- D=D+now;
- N>>=;
- }
- printf("%d",D.a[ha[s]][ha[e]]);
- return ;
- }
Cow Relays,过N条边的最短路的更多相关文章
- poj3613 Cow Relays【好题】【最短路】【快速幂】
Cow Relays Time Limit: 1000MS Memory Limit: 65536K Total Submissions:9207 Accepted: 3604 Descrip ...
- POJ3613 Cow Relays [矩阵乘法 floyd类似]
Cow Relays Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7335 Accepted: 2878 Descri ...
- Cow Relays 【优先队列优化的BFS】USACO 2001 Open
Cow Relays Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tota ...
- poj3613:Cow Relays(倍增优化+矩阵乘法floyd+快速幂)
Cow Relays Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7825 Accepted: 3068 Descri ...
- Poj 3613 Cow Relays (图论)
Poj 3613 Cow Relays (图论) 题目大意 给出一个无向图,T条边,给出N,S,E,求S到E经过N条边的最短路径长度 理论上讲就是给了有n条边限制的最短路 solution 最一开始想 ...
- 2021.11.03 P2886 [USACO07NOV]Cow Relays G(矩阵+floyed)
2021.11.03 P2886 [USACO07NOV]Cow Relays G(矩阵+floyed) [P2886 USACO07NOV]Cow Relays G - 洛谷 | 计算机科学教育新生 ...
- poj 3613 Cow Relays
Cow Relays Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5411 Accepted: 2153 Descri ...
- [USACO 07NOV]Cow Relays
Description For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a rel ...
- Cow Relays POJ - 3613 (floyd+快速幂)
For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a relay race usin ...
随机推荐
- (七)DVWA之SQL Injection--SQLMap测试(Low)
目录结构 一.测试需求分析 二.SQLMap利用SQL注入漏洞,获取数据库信息 1.判断是否存在注入点 2.获取DBMS中所有的数据库名称 3.获取Web应用当前连接的数据库 4.列出数据库中的所有用 ...
- tensorflow2.0学习笔记第一章第一节
一.简单的神经网络实现过程 1.1张量的生成 # 创建一个张量 #tf.constant(张量内容,dtpye=数据类型(可选)) import tensorflow as tf import num ...
- nginx下通过子路径配置多个vue单页应用的方法
千辛万苦在Stack Overflow上找来的,记下吧. https://stackoverflow.com/q/31519505/13651734 我的需求是 首页:/ 项目a:/aaa 项目 b: ...
- call,apply,bind的理解
2020-03-19 call,apply,bind的理解 先说区别call, apply基本上没什么不一样,唯一不一样的地方是传参方式不同 但是bind和call,apply有区别.bind是重新绑 ...
- 结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程
结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程 目录 结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程 一. 实验准备 二. 实验过程 I 分析中断上下文的切换 ...
- MySQL连接查询驱动表被驱动表以及性能优化
准备我们需要的表结构和数据 两张表 studnet(学生)表和score(成绩)表, 创建表的SQL语句如下 CREATE TABLE `student` ( `id` int(11) NOT NUL ...
- MySQL ORDER BY:对查询结果进行排序
在 MySQL SELECT 语句中,ORDER BY 子句主要用来将结果集中的数据按照一定的顺序进行排序. 其语法格式为: ORDER BY {<列名> | <表达式> | ...
- 深入理解 EF Core:EF Core 读取数据时发生了什么?
阅读本文大概需要 11 分钟. 原文:https://bit.ly/2UMiDLb 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能 ...
- python基础整理(2)
布尔表达式与其余值的替换 值的测试 Python不仅仅可以使用布尔型变量作为条件,它可以直接在if中使用任何表达式作为条件: 大部分表达式的值都会被当作True,但以下表达式值会被当作False: F ...
- 记PHP下载大文件失败的一次坑
说明 php提供文件的储存和下载,nginx作为web服务器,fpm做解析. 现象 当下载一个5M大小的图片时,总提示下载失败,或下载下来的文件不完整,仅显示部分图像(每次下载不一样) php下载相关 ...