Spfa(最短路求解)
spfa(最短路求解)
模板:
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
const int maxn = 105;
const int maxm = 100005;
struct Edge{
int to,w,next;
}edge[maxm<<1];
int tot = 0,dis[maxn],cnt[maxn],head[maxn];
void addedge(int u,int v,int w)
{
edge[tot].to = v;edge[tot].w = w;edge[tot].next = head[u];
head[u] = tot++;
}
void spfa(int st,int ed)
{
int i;
queue<int>que;
while (!que.empty()) que.pop();
memset(dis,0x3f3f3f3f,sizeof(dis));
memset(cnt,0,sizeof(cnt));
que.push(st);
dis[st] = 0;
cnt[st] = 1;
while (!que.empty())
{
int u = que.front();
que.pop();
if (u == ed) continue;
for (i = head[u];i != -1;i = edge[i].next)
{
int v = edge[i].to;
if (dis[u] + edge[i].w < dis[v])
{
dis[v] = dis[u] + edge[i].w;
if (!cnt[v]) que.push(v);
cnt[v] = cnt[u];
}
else if (dis[u] + edge[i].w == dis[v])
{
if (!cnt[v]) que.push(v);
cnt[v] += cnt[u];
}
}
}
}
int main()
{
int N,M,S,E,u,v,w,i;
memset(head,-1,sizeof(head));
scanf("%d%d%d%d",&N,&M,&S,&E);
while (M--)
{
scanf("%d%d%d",&u,&v,&w);
addedge(u,v,w);
addedge(v,u,w);
}
spfa(S,E);
printf("%d %d\n",dis[E],cnt[E]);
return 0;
}
也可以计算有多少个最小生成树
Spfa(最短路求解)的更多相关文章
- Dijkstra(最短路求解)
Dijkstra(最短路求解) 模板: #include<iostream> #include<cstdio> #include<cstring> #include ...
- NOIP2013 华容道 (棋盘建图+spfa最短路)
#include <cstdio> #include <algorithm> #include <cstring> #include <queue> # ...
- BZOJ 1003 物流运输 (动态规划 SPFA 最短路)
1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 5590 Solved: 2293 [Submit][Stat ...
- poj1502 spfa最短路
//Accepted 320 KB 16 ms //有n个顶点,边权用A表示 //给出下三角矩阵,求从一号顶点出发到各点的最短路的最大值 #include <cstdio> #includ ...
- hiho(1081),SPFA最短路,(非主流写法)
题目链接:http://hihocoder.com/problemset/problem/1081 SPFA求最短路,是不应-羁绊大神教我的,附上头像. 我第一次写SPFA,我用的vector存邻接表 ...
- hdu 5545 The Battle of Guandu spfa最短路
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5545 题意:有N个村庄, M 个战场: $ 1 <=N,M <= 10^5 $; 其中曹 ...
- HNU 13375 Flowery Trails (spfa最短路)
求最短路径覆盖的全部边权值和. 思路:分别从起点和终点两次求最短路,再比较两个点到起点的距离和他们之间的权值相加和是否等于最短路径. 这题很好 #include <cstring> #in ...
- poj 1847 Tram【spfa最短路】
Tram Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12005 Accepted: 4365 Description ...
- POJ - 1062(昂贵的聘礼)(有限制的spfa最短路)
题意:...中文题... 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 54350 Accepted: 16 ...
随机推荐
- 4.3 数据操纵语言(DML)
本章介绍DML的基本语句. 对数据只能执行以下四种操作:创建(Create)记录.读取(Read)记录.更新(Update)记录值和删除(Delete)记录.这几个词拼写为CRUD——即可对数据执行C ...
- Windows2012开机启动项设置
最简单方式 开始->运行->输入shell:startup 在打开的启动文件夹中,将需要启动程序的快捷方式复制进去,完工 重启试试吧 https://blog.csdn.net/tmton ...
- SpringBoot(六) Web Applications: Embedded Containers(嵌入式容器)
参考 文档: 28.4 Embedded Servlet Container Support
- python Django html 一对多数据实例 模态对话框添加数据
- Springmvc中的HandlerAdaptor执行流程
今天讲解一下在Springmvc中的HandlerAdaptor执行流程,明白这个过程,你就能画出下面的图: 接下来我们就来看看具体的实现过程吧. 1.0在DispatcherServlet中找到ge ...
- 无效的列类型:getTimestamp not implemented for class oracle.jdbc.driver.T4CNumberAccessor
错误信息: 无效的列类型:getTimestamp not implemented for class oracle.jdbc.driver.T4CNumberAccessor 错误原因:经过排查发现 ...
- P/Invoke出现错误 System.NullReferenceException”类型的未经处理的异常在 未知模块。 中发生 未将对象引用设置到对象的实例。
问题 “System.NullReferenceException”类型的未经处理的异常在 未知模块. 中发生 未将对象引用设置到对象的实例. 解决方案 1.尝试 用管理员身份运行CMD,输入nets ...
- How to download a CRX file from the Chrome web store
如何从 谷歌浏览器商店 离线下载 谷歌浏览器扩展 Simply copying the Chrome store extension url to the following website: htt ...
- asp.net mvc +easyui 实现权限管理(一)
权限是每个企业应用必须的模块,可以简单,也能比较复杂.目前我们公司的权限要求是 能管控页面.字段.按钮.以及数据权限. 正好公司的进销存系统权限模块由我负责.做完后做下记录是个不错的习惯,知识是慢慢积 ...
- 从CVE-2018-1273看漏洞分析
漏洞分析的边界 漏洞分析最应该关注的是漏洞相关的代码,至于其余的代码可以通过关键位置下断点,来理解大概功能. 其中最关键的就是了解数据流,找到离漏洞位置最近的 原始数据 经过的位置,然后开始往下分析, ...