题目描述

给出一个NN个顶点MM条边的无向无权图,顶点编号为1-N1−N。问从顶点11开始,到其他每个点的最短路有几条。

输入输出格式

输入格式:

第一行包含22个正整数N,MN,M,为图的顶点数与边数。

接下来MM行,每行22个正整数x,yx,y,表示有一条顶点xx连向顶点yy的边,请注意可能有自环与重边。

输出格式:

共NN行,每行一个非负整数,第ii行输出从顶点11到顶点ii有多少条不同的最短路,由于答案有可能会很大,你只需要输出ans \bmod 100003ansmod100003后的结果即可。如果无法到达顶点ii则输出00。

输入输出样例

输入样例#1: 复制

5 7
1 2
1 3
2 4
3 4
2 3
4 5
4 5
输出样例#1: 复制

1
1
1
2
4

说明

11到55的最短路有44条,分别为22条1-2-4-51−2−4−5和22条1-3-4-51−3−4−5(由于4-54−5的边有22条)。

对于20\%20%的数据,N ≤ 100N≤100;

对于60\%60%的数据,N ≤ 1000N≤1000;

对于100\%100%的数据,N<=1000000,M<=2000000N<=1000000,M<=2000000。

题解

算是最短路的小技巧?

if(dis[to]>dis[x]+)ans[to]=ans[x];
else if(dis[to]==dis[x]+)ans[to]+=ans[x];

在dijkstra的同时顺便维护,这样就可以了。

不是很敢用spfa。

然后注意一下这道题是无向图要建双向边就好了。

 /*
qwerta
P1144 最短路计数 Accepted
100
代码 C++,1.05KB
提交时间 2018-11-05 22:20:55
耗时/内存 247ms, 9120KB
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
struct emm{
int e,f;
}a[];
int h[];
int tot=;
void con(int x,int y)
{
a[++tot].f=h[x];
h[x]=tot;
a[tot].e=y;
a[++tot].f=h[y];
h[y]=tot;
a[tot].e=x;
return;
}
int d[];
int s[];
struct ahh{
int nod,v;
};
struct cmp{
bool operator()(ahh qaq,ahh qwq){
return qaq.v>qwq.v;
};
};
priority_queue<ahh,vector<ahh>,cmp>q;
bool sf[];
const int mod=;
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=m;++i)
{
int x,y;
scanf("%d%d",&x,&y);
con(x,y);
}
memset(d,,sizeof(d));
d[]=;s[]=;
q.push((ahh){,});
while(!q.empty())
{
int x;
do{x=q.top().nod;q.pop();}while(sf[x]&&!q.empty());
sf[x]=;
for(int i=h[x];i;i=a[i].f)
if(!sf[a[i].e])
{
if(d[a[i].e]>d[x]+)
{
d[a[i].e]=d[x]+;
s[a[i].e]=s[x];
q.push((ahh){a[i].e,d[a[i].e]});
}
else if(d[a[i].e]==d[x]+)
{
s[a[i].e]+=s[x];
s[a[i].e]%=mod;
}
}
}
for(int i=;i<=n;++i)
printf("%d\n",s[i]%mod);
return ;
}

「LuoguP1144」 最短路计数(dijkstra的更多相关文章

  1. 「luogu4366」最短路

    「luogu4366」最短路 传送门 直接连边显然不行,考虑优化. 根据异或的结合律和交换律等优秀性质,我们每次只让当前点向只有一位之别的另一个点连边,然后就直接跑最短路. 注意点数会很多,所以用配对 ...

  2. 「NOI2013」树的计数 解题报告

    「NOI2013」树的计数 这什么神题 考虑对bfs重新编号为1,2,3...n,然后重新搞一下dfs序 设dfs序为\(dfn_i\),dfs序第\(i\)位对应的节点为\(pos_i\) 一个暴力 ...

  3. loj#2665. 「NOI2013」树的计数

    目录 题目链接 题解 代码 题目链接 loj#2665. 「NOI2013」树的计数 题解 求树高的期望 对bfs序分层 考虑同时符合dfs和bfs序的树满足什么条件 第一个点要强制分层 对于bfs序 ...

  4. 最短路计数——Dijkstra

    题目: 给出一个N个顶点M条边的无向无权图,顶点编号为1−N.问从顶点1开始,到其他每个点的最短路有几条. ——传送门 受到题解的启发,用 Dijkstra A掉(手工代码) 思路: 1.无向无权图, ...

  5. 逛公园「NOIP2017」最短路+DP

    大家好我叫蒟蒻,这是我的第一篇信竞题解blog [题目描述] 策策同学特别喜欢逛公园. 公园可以看成一张 \(N\) 个点 \(M\) 条边构成的有向图,且没有自环和重边.其中 \(1\) 号点是公园 ...

  6. 「PKUWC2019」拓扑序计数(状压dp)

    考场只打了 \(52\) 分暴力...\(ljc\) 跟我说了一下大致思路,我回去敲了敲. \(f[i]\) 表示状态为 \(i\) 时的方案数.我们用二进制 \(0/1\) 表示不选/选点 \(i\ ...

  7. 【LOJ】 #2665. 「NOI2013」树的计数

    题解 我们统计深度对于bfs序统计,树结构出现分歧的地方必然是BFS序的最后一段,这个最后一段同时还得是dfs序上连续的一段 如果不是bfs序的最后一段,那么必然下一层会有节点,如果树结构分歧了,那么 ...

  8. LOJ2719. 「NOI2018」冒泡排序 [组合计数]

    LOJ 思路 这题我看着题解还搞了几个小时?我也不知道自己在干啥-- 首先你要通过出色的分析能力得到一个结论:一个排列合法当且仅当它的最长下降子序列长度不超过2. 证明?懒得写了. 然后我们不管字典序 ...

  9. 【LOJ】#3043. 「ZJOI2019」线段树

    LOJ#3043. 「ZJOI2019」线段树 计数转期望的一道好题-- 每个点设两个变量\(p,q\)表示这个点有\(p\)的概率有标记,有\(q\)的概率到祖先的路径上有个标记 被覆盖的点$0.5 ...

随机推荐

  1. 设计模式之Visitor模式(笔记)

    訪问者模式:表示一个作用于某个对象结构中的各元素操作.它使你能够不改变各元素的类的前提下定义作用于这些元素的新操作. 首先定义一个visitor抽象类,为每一个详细类声明一个visit操作 publi ...

  2. 六种基本DCDC变换器拓扑结构

    1.SEPIC电路 2.

  3. Enumerate Combination C(k, n) in a bitset

    Suppose n<=32, we can enumerate C(k, n), with bits representing absence or presence, in the follo ...

  4. html5 cocos2d js Access-Control-Allow-Origin

    1.No 'Access-Control-Allow-Origin' header is present on the requested 近期在接html5的渠道,遇到了跨域的问题,使用 js 的 ...

  5. Android Handler 异步消息处理机制的妙用 创建强大的图片载入类

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38476887 ,本文出自[张鸿洋的博客] 近期创建了一个群.方便大家交流,群号: ...

  6. 常见的CPU訪问引起的内存保护问题为什么仅仅用event_122上报 - 举例2

    还有一个样例.通过以下的log看,CPU在訪问reserved的地址0x53611EFD.非法訪问时该地址会在L1D内存控制器的L1DMPFSR寄存器中记录. ** FATAL EXCEPTION N ...

  7. jQuery--基础(查询标签)

    浅谈jQuery使用背景 jQuery是使用原生js写成的一个库,使用简单,提高开发效率.在用js冗杂的代码解决的问题中,大部分都可以用jQuery来快速解决. 例如: js中查询网页中ID为&quo ...

  8. erlang程序优化点的总结

    注意,这里只是给出一个总结,具体性能需要根据实际环境和需要来确定 霸爷指出,新的erlang虚拟机有很多调优启动参数,今后现在这个方面深挖一下. 1. 进程标志设置: 消息和binary内存:erla ...

  9. pooler 连接池中报错" error_no_members"

    连接池驱动,pooler 在使用中会报错" error_no_members" 分析:可能有以下3个地方对其有影响:    1)member 可能没回收: 2)wait_for_p ...

  10. go with go

    1, vim 安装vim-go 打造GOLANG 专用IDE golang和vim-go安装配置 2, 阅读图书 <Go语言实战> William Kennedy等, 李兆海 译 3,在线 ...