博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P3371最短路
阅读量:6196 次
发布时间:2019-06-21

本文共 1512 字,大约阅读时间需要 5 分钟。

Dijkstra算法

#include
#include
#include
#include
#include
#include
int maxn=2147483647;int minn;using namespace std;struct H{ int to;//邻接点 int ll;//边权 };vector
w[10001];//动态数组int dis[10001];int f[10001];int main(){ int n,m,s; scanf("%d%d%d",&n,&m,&s); for(int i=1;i<=m;i++) { int x,y,l; scanf("%d%d%d",&x,&y,&l); H k; k.to=y; k.ll=l; w[x].push_back(k); } f[s]=1; for(int i=1;i<=n;i++)dis[i]=maxn; for(int i=0;i

spfa算法

#include
#include
#include
#include
#include
#define LL long long#define mm 2147483647using namespace std;struct H{ int to; int ll;};vector
w[10001];//动态数组,节省空间int f[10001];int dis[10001];int team[10*10001];//要大,因为要入很多点int main(){ int n,m,s; scanf("%d%d%d",&n,&m,&s); for(int i=1;i<=m;i++) { int x,y,l; scanf("%d%d%d",&x,&y,&l); H p; p.to=y,p.ll=l; w[x].push_back(p); } for(int i=1;i<=n;i++)dis[i]=mm; dis[s]=0; //初始化 int head=0,tail=1; team[1]=s,f[s]=1; while(tail>head) { int k=team[++head]; f[k]=0;//出队 for(int i=0;i
dis[k]+w[k][i].ll) { dis[w[k][i].to]=dis[k]+w[k][i].ll; if(!f[w[k][i].to])//队列中不存在w[k][i].to点 { team[++tail]=w[k][i].to;//入队 f[team[tail]]=1; } } } } for(int i=1;i<=n;i++) printf("%d ",dis[i]); //printf("%d",sizeof(w)/1024/1024); return 0;}

Dijkstra好几个小时,

spfa一个多小时。
就这样,我被征服了。。。

转载于:https://www.cnblogs.com/dfsac/p/6819787.html

你可能感兴趣的文章
强大的JQuery表单验证插件 FormValidator使用介绍
查看>>
多页Excel转换成PDF时如何保存为单独文件
查看>>
30分钟LINQ教程
查看>>
C#(winform)为button添加背景图片
查看>>
自带的打印预览
查看>>
linux 学习笔记 执行脚本篇章
查看>>
05-linux基础二-用户和权限操作
查看>>
【转载】FPGA 中的latch 锁存器
查看>>
Grep console 设置
查看>>
linux系统下安装两个或多个tomcat
查看>>
[mac]Parallels Desktop 7 vmware fusion 4 测试心得
查看>>
App开发环境_Eclipse_20160925
查看>>
查找python安装目录
查看>>
Idea中配置Tomcat
查看>>
shop_z 一套非常适合二次开发的php后台管理系统
查看>>
javascript 模式(2)——单例模式
查看>>
在编程语言中分频的计算方法
查看>>
JAVA-JSP内置对象之response对象实现页面跳转
查看>>
python使用代理ip发送http请求
查看>>
paramiko入门1
查看>>