天朝的单行道+csuoj+spfa算法求最短路
1256: 天朝的单行道
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 168 Solved: 49
Description
Input
Output
Sample Input
2 1 1 22 1 2 12 0
Sample Output
0 1 -1
解决方案:可代换一下,正向的路径设为0,反向的路径设为1,直接求最短路就得出需要改变单行道的方向个数。
code:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define PMax 5005
#define EMax 30005
using namespace std;
int head[PMax],d[PMax],inqueue[PMax];
int N,M,k;
struct edge
{int from,to,v;int next;
} E[EMax];
void add(int from,int to,int v)
{E[k].from=from;E[k].to=to;E[k].v=v;E[k].next=head[from];head[from]=k++;}
void spfa()
{memset(inqueue,false,sizeof(inqueue));memset(d,0x3f,sizeof(d));d[1]=0;inqueue[1]=true;queue<int>Q;Q.push(1);while(!Q.empty()){int temp=Q.front();Q.pop();inqueue[temp]=false;for(int v=head[temp]; v!=-1; v=E[v].next){if(d[E[v].to]>d[temp]+E[v].v){d[E[v].to]=d[temp]+E[v].v;if(!inqueue[E[v].to]){inqueue[E[v].to]=true;Q.push(E[v].to);}}}}}
int main()
{int from,to,v;while(~scanf("%d%d",&N,&M)){memset(head,-1,sizeof(head));k=0;for(int i=0; i<M; i++){scanf("%d%d",&from,&to);add(from,to,0);add(to,from,1);}spfa();if(d[N]>M){printf("-1\n");}else printf("%d\n",d[N]);}return 0;}
天朝的单行道+csuoj+spfa算法求最短路相关推荐
- SPFA算法求最短路
AcWing 851. spfa求最短路 题目 https://www.acwing.com/problem/content/submission/853/ 给定一个 n 个点 m 条边的有向图,图中 ...
- SPFA算法求固定点到其它点 最短 最长 路程问题
点击:理解请参考 例题:https://www.luogu.com.cn/problem/P1807 如果求最短路径 :vis[nex] = min(vis[nex], vis[now]+B[now] ...
- 2019中山纪念中学夏令营-Day14 图论初步【dijkstra算法求最短路】
Dijkstra是我学会的第一个最短路算法,为什么不先去学SPFA呢?因为我在luogu上翻到了一张比较神奇的图: 关于SPFA -它死了 以及网上还有各位大佬的经验告诉我:SPFA这玩意很容易被卡. ...
- POJ 3255(迪杰斯特拉算法求次短路)
POJ3255,问题是求节点1到n的次短路. 在dijkstra求最短路算法的基础上进行变形,用两个数组分别记录源点到各节点最短路径和次短路径: 每次更新时,都将最短路的节点及可能成为次短路的节点pu ...
- Floyd算法求最短路
Floyd算法(基于动态规划):用于求多源汇最短路 初始化:用邻接矩阵d[i,j]存储中所有的边,floyd算法就是三重循环 for(k = 1;k <= n;k ++){ for(i = 1; ...
- 【单源最短路】Dijkstra算法求最短路
题目描述 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值. 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1. 输入格式 第一 ...
- Dijkstra算法求最短路
一.算法描述 Dijkstra算法的流程如下: 1.初始化dist[1] = 0,其余节点的dist值为无穷大. 2.找出一个未被标记的.dist[x]最小的节点x,然后标记节点x. 3.扫描节点x的 ...
- HDU SPFA算法 Invitation Cards
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1535 分析: 题意:求1点到其它点的最短距离之和+其它点到1点的最短距离之和 前面一部分直接用SPFA ...
- ACM算法--spfa算法--最短路算法
求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm. SPFA算法是西南交通大学段凡丁于1994年发表的. 从名字我们就可以看出,这种算 ...
- 最短路算法 :Bellman-ford算法 Dijkstra算法 floyd算法 SPFA算法 详解
本文链接 :http://www.cnblogs.com/Yan-C/p/3916281.html . 在本文中因为邻接表在比赛中不如前向星好写,而且前向星效率并不低所以,本文的代码 存图只 ...
最新文章
- windows server 2003磁盘管理
- vscode设置eslint检验无效_大整理!JavaScript开发者的27个神奇VSCode工具
- Python3 拼接符+和join效率对比测试
- Windows下Nutch的配置
- 三个锦囊:剖析 5G 安全难题
- 复旦自考 网络专业 java 上机考_上海复旦大学自考方法及考试科目
- [笔记] 如何从不同扩展名的数字证书中提取明文信息? *.pem *.der *.crt *.cer *.key之间的区别是什么?...
- 大哥都是从小弟做起的
- 百分点大数据技术团队:Cesium技术在智慧应急行业的应用
- 项目管理 | 怎么开项目启动会?
- 邮件发送(qq邮箱)
- 听觉能力类毕业论文文献有哪些?
- 如何在不泄露私人信息的情况下共享屏幕
- 【项目成长日记】VS虐我千百遍—MVC框架加EF映射MySQL需要做的准备
- Python列表(list)反序(降序)的7种实现方式
- 二三维GIS智慧环保应用平台
- java销售管理系统_图书销售管理系统Java源代码
- 表彰大会项目经理的辛酸史。数字荣誉墙外场布置大屏触控墙颁奖表彰优秀员工英雄榜单销售经理优秀经销商外场布置跳跃互动tioyo
- python图像条状状噪声_一起学opencv-python十(给图像加噪声,模糊处理和图像锐化)...
- matlab短路计算10机39节点