洛谷P1144 最短路计数【堆优化dijkstra】
题目:https://www.luogu.org/problemnew/show/P1144
题意:问1到各个节点的最短路有多少条。
思路:如果松弛的时候发现是相等的,说明可以经过该点的最短路径到达当前点,也就是说最短路径变多了。
#include<cstdio>
#include<cstdlib>
#include<map>
#include<set>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#include<stack>
#include<queue>
#include<iostream> #define inf 0x3f3f3f3f
using namespace std;
typedef long long LL;
typedef pair<int, int> pr; int n, m;
const int mod = 1e5 + ;
const int maxn = 1e6 + ;
const int maxm = 2e6 + ;
int head[maxn];
struct edge{
int to, nxt;
}e[maxm * ];
int tot = ; void add(int x, int y)
{
e[++tot].to = y;
e[tot].nxt = head[x];
head[x] = tot;
e[++tot].to = x;
e[tot].nxt = head[y];
head[y] = tot;
} struct cmp{
bool operator()(const pr &a, const pr &b)
{
return a.first > b.first;
}
}; int d[maxn], cnt[maxn];
bool vis[maxn];
void dijkstra()
{
memset(d, 0x3f, sizeof(d));
priority_queue<pr>que;
vis[] = true;
cnt[] = ;
d[] = ;
que.push(make_pair(d[], ));
while(!que.empty()){
pr now = que.top();que.pop();
vis[now.second] = true;
for(int i = head[now.second]; i; i = e[i].nxt){
if(d[e[i].to] > d[now.second] + ){
d[e[i].to] = d[now.second] + ;
cnt[e[i].to] = cnt[now.second];
que.push(make_pair(-d[e[i].to], e[i].to));
}
else if(d[e[i].to] == d[now.second] + ){
cnt[e[i].to] = (cnt[e[i].to] + cnt[now.second]) % mod;
}
}
} } int main()
{
scanf("%d%d", &n, &m);
for(int i = ; i < m; i++){
int x, y;
scanf("%d%d", &x, &y);
add(x, y);
}
dijkstra();
for(int i = ; i <= n; i++){
printf("%d\n", cnt[i]);
}
}
洛谷P1144 最短路计数【堆优化dijkstra】的更多相关文章
- 洛谷P1144 最短路计数(SPFA)
To 洛谷.1144 最短路计数 题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 输入第一行包含2个正整数N,M ...
- 洛谷 P1144 最短路计数 解题报告
P1144 最短路计数 题目描述 给出一个\(N\)个顶点\(M\)条边的无向无权图,顶点编号为\(1-N\).问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 第一行包含2个正 ...
- 洛谷——P1144 最短路计数
P1144 最短路计数 题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 输入第一行包含2个正整数N,M,为图的顶 ...
- 洛谷 P1144 最短路计数 题解
P1144 最短路计数 题目描述 给出一个\(N\)个顶点\(M\)条边的无向无权图,顶点编号为\(1-N\).问从顶点\(1\)开始,到其他每个点的最短路有几条. 输入格式 第一行包含\(2\)个正 ...
- 洛谷P1144 最短路计数 及其引申思考
图论题目练得比较少,发一道spfa的板子题目- 题目:P1144 题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: ...
- 洛谷P1144最短路计数题解
最短路计数 此题还是寻找从1到i点总共有几个最短路且每条边的边长为1,对于这种寻找最短路的个数,我们可以反向搜索,即先用\(SPFA\)预处理出所有点的最短路,然后我们反向记忆化搜索,可以用\(sum ...
- 洛谷 P1144 最短路计数
传送门:https://www.luogu.org/problemnew/show/P1144 这虽然是一道普及+的题,然而我发现我现在还没做过,这也就直接导致我今天模拟T2只杠了个暴力分…… 那这道 ...
- 洛谷P1144——最短路计数
题目:https://www.luogu.org/problemnew/show/P1144 spfa跑最短路的同时记录cnt数组表示到达方案数. 代码如下: #include<iostream ...
- 洛谷 P1144 最短路计数 Label:水
题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 输入第一行包含2个正整数N,M,为图的顶点数与边数. 接下来M行 ...
随机推荐
- windows下图形学视觉基本库安装不完全指南
安装各种库东奔西走...... GLUT(英文全写:OpenGL Utility Toolkit)是一个处理OpenGL程式的工具库,负责处理和底层操作系统的呼叫以及I/O,并包括了以下常见的功能: ...
- Tcp问题汇总
一 TCP三次握手 PS:TCP协议中,主动发起请求的一端称为『客户端』,被动连接的一端称为『服务端』.不管是客户端还是服务端,TCP连接建立完后都能发送和接收数据. 起初,服务器和客户端都为CLOS ...
- 笔记-4:mysql数据查询
1.创建查询表 1.1 创建班级表 含义 字段名 数据类型 宽度 班级编号 classNo 字符型 6 班级名称 className 字符型 20 所属院系 department 字符型 30 年级 ...
- PAT(B)1003 我要通过!(Java)
1003 我要通过! 题目 判断字符串是否符合给定的规则.更多内容点击标题. 参考博客 ValarMorghulis的博客 分析 规律:num_a * num_b = num_c.字符串a中字 ...
- Composer安装yii2-imagine 压缩,剪切,旋转,水印
安装:composer require --prefer-dist yiisoft/yii2-imagine 查看是否安装成功, 安装了两个目录分别是 vendor/imagine vendor/yi ...
- PHP传引用赋值底层的变化
$a = 3;$b = &$a;//传引用,即地址赋值 使用xdebug_debug_zval('a');使用xdebug_debug_zval('b');运行结果为:a:(refcount= ...
- Unity性能优化-遮挡剔除
1. Occlusion Culling-遮挡剔除的含义:没有在Camear视野范围内的游戏物体不进行渲染Render(默认情况下,Unity是会渲染所有GameObject,无论Camear是否看得 ...
- 16-MySQL DBA笔记-调优基础理论和工具
第五部分 性能调优与架构篇 本篇将为读者介绍性能调优的一些背景知识和理论,然后介绍一些工具的运用,最后介绍从应用程序到操作系统.到数据库.到存储各个环节的优化. 性能调优是一个高度专业的领域,它需要一 ...
- 使用IP代理初体验
在很多时候我们需要用到IP代理,比如爬虫.投票等 封IP是一种很常用的办法,所谓道高一尺.魔高一丈,IP代理应运而生 最简单的一段代码 static void Main(string[] args) ...
- mysql 2 修改表
1 修改表名 rename table aaa to bbb; 或者 rename table aaa to bbb; 2 修改字段的数据类型 alter table person modify na ...