题目描述

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

输入格式

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

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

输出格式

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

输入输出样例

输入 #1

5 7
1 2
1 3
2 4
3 4
2 3
4 5
4 5
输出 #1

1
1
1
2
4
跑一遍SPFA,松弛的时候顺便统计条数即可。注意要边加边模,开两倍边数组存储反向边。
#include <bits/stdc++.h>
#define MOD 100003
using namespace std;
int n,m;
const int N=,M=;//两倍存双向边
int head[N],ver[M],edge[M],Next[M],d[N][];//d[i][0]存储最短路距离 d[i][1]存储最短路径数目
int tot=;
queue<int>q;
bool v[N];
void add(int x,int y,int z)
{
ver[++tot]=y;
edge[tot]=z;
Next[tot]=head[x];
head[x]=tot;
}
void spfa()
{
int i;
for(i=;i<=n;i++)
{
d[i][]=0x3f3f3f3f;
d[i][]=;
}
memset(v,,sizeof(v));
d[][]=;
d[][]=;//一定要初始化为1,自己到自己有一条长为0的最短路
v[]=;
q.push();
while(q.size())
{
int x=q.front();
q.pop();
v[x]=;
for(i=head[x];i;i=Next[i])
{
int y=ver[i],z=edge[i];
if(d[y][]>d[x][]+z)
{
d[y][]=d[x][]+z;
d[y][]=d[x][];//能被更新的话直接继承过来
if(!v[y])q.push(y),v[y]=;
}
else if(d[y][]==d[x][]+z)
{
d[y][]=(d[y][]+d[x][])%MOD;//相等的话再原来的基础上添加由x到y经过长为z的边的最短路径数目(即d[x])
}
}
}
}
int main()
{
cin>>n>>m;
int i;
for(i=;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);//存无向图
add(y,x,z);
}
spfa();
for(i=;i<=n;i++)
{
if(d[i][]!=0x3f3f3f3f)printf("%d\n",d[i][]%MOD);
else printf("0\n");
}
}

最新文章

  1. Java内部类final语义实现
  2. js三级地区联动
  3. Pip install lxml centOSFailed building wheel for lxml
  4. MongoDB分片之数据分割方式
  5. ubuntu 在mac 的 Parallels 的分辨率问题
  6. Tableview 优化Cell的复用机制01
  7. linux下删除文件名乱码文件
  8. hdu1116 欧拉回路
  9. 重拾C,一天一点点_9-指针与数组
  10. JavaScript 学习-变量的作用域和块级作用域
  11. Golang的&quot;泛型&quot;模式
  12. Tree Cutting
  13. 记一次工作失误,openresty报502错误
  14. 运维rpm语法
  15. python中argparse
  16. windows开机锁定小键盘
  17. 索引Hint提示(INDEX Hint)
  18. 2017-2018-1 20155318 《信息安全系统设计基础》第九周课下实践——实现mypwd
  19. Scala入门系列(三):数组
  20. Python3.x urlib包

热门文章

  1. Coloring Colorfully
  2. redis设置键值生存时间
  3. java中的try-catch-finally中的return的执行顺序
  4. UltraEdit设置打开的文件类型,怎么打开大文本文件
  5. IntelliJ IDEA 2017.3尚硅谷-----滚轮修改字体大小
  6. Maven快速创建SpringMVC web(1)
  7. [蓝桥杯][基础训练]Huffuman树
  8. Sass&amp;Scss入门 选择器 混合器 导入 条件判断 迭代
  9. Eclipse C++配置静态链接库和动态链接库
  10. Ubuntu中获取和使用uiautomatorviewer