洛谷 1144_最短路计数_spfa
来源:互联网 发布:知之深爱之切经典 编辑:程序博客网 时间:2024/06/04 18:02
题目描述
给出一个N个顶点M条边的无向无权图,顶点编号为1~N。问从顶点1开始,到其他每个点的最短路有几条。
思路
因为是无权边,所以第一个走到的肯定是最短的,然后在spfa中开一个记录的数组,每次走到一个路程等于它的就加上来的那个点有多少种方法
O(KE)
#include <stdio.h>#include <queue>#define maxn 2000001#define mod 100003using namespace std;int l=0;struct arr { int x,y,w,next; };arr edge[maxn];int state[maxn],ls[maxn],f[maxn];bool exits[maxn];int spfa(){ int i; queue <int> t; t.push(1); state[1]=0; exits[1]=true; do { int tt=t.front(); t.pop(); i=ls[tt]; while (i!=0) { if (state[edge[i].x]+edge[i].w<=state[edge[i].y]) { f[edge[i].y]+=1*f[edge[i].x]; f[edge[i].y]%=mod; state[edge[i].y]=state[edge[i].x]+edge[i].w; if (exits[edge[i].y]==false) { t.push(edge[i].y); exits[edge[i].y]=true; } } i=edge[i].next; } exits[tt]=false; } while (!t.empty());}int main(){ int j,k,n,m,s; scanf("%d%d",&n,&m); for (int i=1;i<=m;i++) { l++; int x,y; scanf("%d%d",&x,&y); edge[l].x=x; edge[l].y=y; edge[l].w=1; edge[l].next=ls[edge[l].x]; ls[edge[l].x]=l; l++; edge[l].x=y; edge[l].y=x; edge[l].w=1; edge[l].next=ls[edge[l].x]; ls[edge[l].x]=l; } for (int i=1;i<maxn;i++) state[i]=0xfffffff; f[1]=1; spfa(); for (int i=1;i<=n;i++) printf("%d\n",f[i]);}
1 0
- 洛谷 1144_最短路计数_spfa
- 最短路计数_洛谷1144_最短路
- 极其简单的最短路_纪中2051_spfa
- 【洛谷1144】最短路计数 最短路
- 洛谷1144 最短路计数
- 洛谷 1144 最短路计数
- 畅通工程续(最短路_弗洛伊德算法,最短路_迪杰斯特克拉算法,最短路_SPFA+前向星)
- 【SPFA】洛谷1144 最短路计数
- 洛谷 1144 最短路计数 bfs
- 【洛谷 1144】【模板】最短路计数
- spfa+dp(洛谷1144 最短路计数)
- C(最短路_spfa+前向星)
- 最短路计数 洛谷 1114 最短路
- 【DayDayUp】【算法_图_最短路_之二_SPFA最劣、Dij堆优化&Johnson(结点对最短路)】(待续)
- 洛谷 P1144 最短路计数
- 洛谷 P1144 最短路计数
- 洛谷 P1144 最短路计数
- 洛谷 P1144 最短路计数
- PAT-1118. Birds in Forest (25)
- UVA10474 Where is the Marble?
- c++ string
- 并归排序
- 第32天(就业班) hibernate框架概述、ORM概念、hibernate第一个实例、api讲解、查询方式、主配置文件、映射配置、主键映射
- 洛谷 1144_最短路计数_spfa
- Smallest Difference POJ
- Operation System: Multi-thread 多线程 v.s. 多进程
- 洛谷 P1629 邮递员送信
- 基础练习 Sine之舞
- 【Stanford-ML-Discussion】二值分类器的多值分类问题理解
- Java内存管理的小技巧
- 时钟节拍
- HDU1233 还是畅通工程(最小生成树模板题,Prime,kruskal算法)