技术标签: 最短路径 ACM-最短/长路径 SPFA
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
const int INF=1e15;
typedef struct{
int to;
int val;
}Point;
int n,m,c;
vector<Point> map[120];
int dis[120];
int path[120];
void SPFA()
{
for(int i=2;i<=n;i++)
dis[i]=INF;
dis[1]=0;
queue<int>q;
q.push(1);
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=0;i<map[u].size();i++)
{
Point v=map[u][i];
if(dis[v.to]>dis[u]+v.val)
{
dis[v.to]=dis[u]+v.val;
path[v.to]=u; //存每个点的前一个点
q.push(v.to);
}
}
}
}
int main()
{
//n为顶点数,m为边数,c为终点
while(scanf("%d%d%d",&n,&m,&c)!=EOF)
{
memset(path,0,sizeof(path));
for(int i=0;i<=n;i++)
map[i].clear();
for(int i=1;i<=m;i++)
{
//u到v有一条有向边,权值为e
int u,v,e;
scanf("%d%d%d",&u,&v,&e);
Point s;
s.to=v;
s.val=e;
map[u].push_back(s);
}
SPFA();
int num[120];
int cnt=0;
printf("%d\n",dis[c]); //最短路径长
printf("1->"); //起始都是从1开始出发
for(int i=c;i!=1;i=path[i])
{
num[cnt++]=i;
}
for(int i=cnt-1;i>0;i--)
{
printf("%d->",num[i]);
}
printf("%d\n",num[0]);
}
return 0;
}
保存1->c的最短路径:用path[ ]记录在每个点最后一次松弛操作中,其前面那个点即可(保证了是最短路径)。
文章浏览阅读2.4k次,点赞9次,收藏34次。Hyperledger-fabric2.3.0环境搭建1. 安装docker1.1 首先,更新需求项1.2 添加更新源1.3 添加docker下载镜像1.4 加入密钥与相关设置1.5 安装docker最后的准备(可有可无吧,这一步不需要成功,应该是只需要其中的一些启动项)实施安装查看版本1.6 加入用户将用户加入该group内,然后退出并重新登陆重启docker服务当前用户切换到docker数组2. 安装docker-compose2.1 安装依赖工具2.1 补充[升级python为3]2.2 准备2.3 _fabric v2.3.0 搭建
文章浏览阅读1.6w次,点赞20次,收藏99次。首先介绍一下BDC即Batch Data Conversion。由于某种原因,当我们需要大量并且重复的输入保存变更删除数据的操作,且没有对应的BAPI可以使用的时候,可以使用BDC的方式进行。其原理是sap通过录屏的方式将业务操作记录下来,然后让计算机重复的进行操作。一,录制业务操作输入TCode:SHDB进入BDC录制初始界面单击工具栏 Newrecording 按钮创建一个新的BDC,系统将弹出Create Recording对话框,要求输入记录名称(此名称可以不用Y或Z开头来定义)和录制程_abap bdc
文章浏览阅读1.5k次。Linux环境下安装JDK11安装包下载链接:https://pan.baidu.com/s/1PpORKQ5dcynRl9L0jvInjw提取码:rxdj安装步骤将下载的文件放入Linux的文件中并使用如下命令进行解压tar -xvf jdk-11.0.12_linux-x64_bin.tar.gz修改环境变量, vim /etc/profile 添加如下内容(目录为自己解压的路径)# JAVA_HOME# /home/software/jdk11为自己解压的路径e_java 11 linux 百度网盘下载
文章浏览阅读6.7k次,点赞2次,收藏6次。场景Linux服务器,在运行启动的.sh文件时nohup ./startup.sh &提示nohup: 无法运行命令"./startup.sh": 权限不够注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现这是因为权限不够,首先进入bin目录下,在bin目录下执行chmod u+x *.sh然后再运行就可以了..._nohup ./startup.sh &
文章浏览阅读332次。今天感觉过的有点迷,早上是电脑系统更新了一早上,下午是刚到了HDMI转VGA的数据线,一直想着尝试,感觉今儿的学习状态极差反正。今晚好好整理一波了,总归是要收获知识的。1.关于putchar: 函数:int putchar ( int c ) 功能是向终端输出一个字符,而这个参数呢,可以是变量,字符常量,整数常量或者是表达式,像putchar(65+32)之类的,感觉需要注_c语言实现hdmi输入输出
文章浏览阅读1.7k次。Android OpenGL ES 3.0开发实战_android native opengl
文章浏览阅读6.4k次。原文地址 sharding-jdbc官方文档:https://shardingsphere.apache.org/document/current/cn/overview/ 本文采用当当的shardingjdbc实现按年分库,按月分表 最终数据库结果如下 image.png 例如有如下sql语句 s..._sharding以年分库 以月分表
文章浏览阅读4.8k次。vue3焦点获取、动态定位焦点,v <div> //获取焦点主要就是定义一个ref <input v-model="inputvalue" ref="inputVal"/> <button @click="addItem">提交</button> </div> methods:{ //事..._vue3setup怎么使用focus
文章浏览阅读6.9k次。1,将input 上的后天传回的时间戳格式化年月日,首先在网上百度各种,有的说不用ng-model ,直接用value,在valeu中将入过滤器,应为ng-model是不能直接加过滤器的展示代码如下: value="{{g.accepTime |date:'yyyy-MM-dd'}} "style="cursor: pointer;">时间是格式化了,但是不能双向绑定了,向后台传入时间,故_angular ngmodel 时间格式化
文章浏览阅读3.5k次。<androidx.constraintlayout.widget.ConstraintLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/tvMsg" android:layout_width="match_parent" android:layout_h..._androidx.constraintlayout.widget.constraintlayout
文章浏览阅读1.3k次。NSUndoManager 被用做撤消和反撤消功能,具体的用法百度和google就好了。这里主要对我项目中的出现的[self.undoManagerundo]; 崩溃问题做一个记录。出现的问题是这样的,当第一次进入A界面时,A界面的地址为0x123,这时我做了2步操作,可以进行两次[self.undoManager undo]。问题从这里产生,如果退出界面前,我没有清掉撤消栈的_swiftui undomanager undo 崩溃
文章浏览阅读751次。Socket套接字:IP和端口的组合HTTPhttp:Hyper text transfer protocol 超文本(包含连接的文件,点击地址会跳转到令一个资源)传输协议 端口:80/TCP 主要传输html编码的数据 http是应用层协议,基于传输层的tcp协议传输 html:Hyper text markup language 超文本标记语言,编程语言 html示例<..._httpd 静态文件