电车
时间:2022-08-10
本文章向大家介绍电车,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
P1346 电车 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
- 题意:图中每个点有一个初始指向的边,如果需要改方向就得下车,求从起点到终点共需要下几次车
- diji解法,对初始指向的边权值为0,其余指向的边权值为1,跑一遍diji最短路
// https://www.luogu.com.cn/problem/P1346
#include <bits/stdc++.h>
using namespace std;
#define MAX 1000000
#define INF 2147483647
struct node
{
int distance, to, inx;
} edges[MAX * 10];
int indexs, head[MAX], n, m, s, e;
typedef struct Node
{
int to, dis;
bool operator<(Node p) const
{
return dis > p.dis;
}
} Node;
void add(int from, int to, int distance)
{
edges[++indexs].to = to;
edges[indexs].distance = distance;
edges[indexs].inx = head[from];
head[from] = indexs;
}
void input()
{
cin >> n >> s >> e;
int v;
for (int i = 1; i <= n; i++)
{
scanf("%d", &m);
for (int j = 1; j <= m; j++)
{
scanf("%d", &v);
if (j == 1)
{
add(i, v, 0);
}
else
{
add(i, v, 1);
}
}
}
}
long long dis[MAX];
int vis[MAX];
void diji()
{
priority_queue<Node> q;
for (int i = 1; i <= n; i++)
{
dis[i] = INF;
}
dis[s] = 0;
q.push((Node){s, 0});
while (!q.empty())
{
Node temp = q.top();
q.pop();
if (vis[temp.to])
continue;
vis[temp.to] = 1;
for (int i = head[temp.to]; i; i = edges[i].inx)
{
if (dis[edges[i].to] > temp.dis + edges[i].distance)
{
dis[edges[i].to] = temp.dis + edges[i].distance;
if (!vis[edges[i].to])
{
q.push((Node){edges[i].to, dis[edges[i].to]});
}
}
}
}
}
int main()
{
input();
diji();
if (dis[e] == INF)
printf("-1");
else
printf("%lld", dis[e]);
}
原文地址:https://www.cnblogs.com/Wang-Xianyi/p/16573693.html
- Hibernate_day02总结
- Hibernate_day01总结
- ADG备库批量查询失败的原因分析(r8笔记第33天)
- 通过外部表改进一个繁琐的大查询 (r8笔记第32天)
- 一个简单的bigfile tablespace无法扩展的案例处理 (r8笔记第31天)
- 测试环境的迁移式升级和数据整合(r8笔记第27天)
- 增量数据丢失的原因分析(r8笔记第26天)
- Java全栈开发Spring学习第三天
- 一个oracle bug的简单验证(r8笔记第45天)
- 批量导出csv文件的基本尝试(r8笔记第44天)
- Golang 中的并发限制与超时控制
- 一条简单的报警信息发现的oracle bug(r8笔记第42天)
- 一条insert语句导致的性能问题分析(一)(r8笔记第40天)
- 一条insert语句导致的性能问题分析(二)(r8笔记第43天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- kali修改root密码
- PPT画成这样,述职答辩还能过吗?
- 详解 Cookie,Session,Token
- SSM 单体框架 - 前端开发:课程和广告模块
- 80 行 Python 代码写个图形计算器
- 近期对libatapp的一些优化调整(增加服务发现和连接管理,支持yaml等)
- SSM 单体框架 - 前端开发:用户和权限模块
- Cnitch:一款Docker引擎运行进程权限检测工具
- SAP Spartacus BrowserPlatformLocation的初始化逻辑
- 重启 CentOS 7 系统后的 IP 地址问题
- SSM 单体框架 - 前端开发:用户权限控制,Nginx 和项目部署与发布
- 用 Python 制作飞机大战小游戏
- SSM 单体框架 - 前端开发:视频讲解
- MyBatis 的 `<if test="">` 语句里面使用反单引号的问题
- 30 个Python代码实现的常用功能,精心整理版