博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小W计树
阅读量:4307 次
发布时间:2019-06-06

本文共 1685 字,大约阅读时间需要 5 分钟。

小W计树


排列组合思想.

先跑一遍最短路, 再从1节点开始搜索, 假如搜到一个点的路径长度等于最短路, 则记录到达该点的路径数 + 1.
最后遍历一遍, ans *= rec[i]
输出答案即可.
关键在于想到这个排列组合的思想.

#include
#include
#include
#define F(x) for (L i=h[x],v=e[i].v,w=e[i].w;i;i=e[i].next,v=e[i].v,w=e[i].w) using namespace std;typedef long long L;void read(L &x) { x=0; char c=getchar(); for (;c<'0' || c>'9';c=getchar()); for (;'0'<=c && c<='9';c=getchar()) x=x*10+c-'0'; }const L Q=2147483647;const L maxn=1e3+10;const L maxm=maxn*maxn;struct edge { L v,w,next;} e[maxm];L tot=0,h[maxn];inline void add(L u,L v,L w) { e[++tot].v=v;e[tot].w=w;e[tot].next=h[u]; h[u]=tot; }L q[maxm],ql,qr,d[maxn];bool inq[maxn];void spfa(L s) { memset(inq,0,sizeof inq); memset(d,0x3f,sizeof d); ql=qr=1; q[qr]=s; d[s]=0; inq[s]=true; while (ql<=qr) { L u=q[ql++]; F(u) if (d[v]>d[u]+w) { d[v]=d[u]+w; if (!inq[v]) inq[v]=true,q[++qr]=v; } inq[u]=false; }}L sum[maxn];void check(L s) { memset(inq,0,sizeof inq); memset(sum,0,sizeof sum); ql=qr=1; q[qr]=s; d[s]=0; inq[s]=true; while (ql<=qr) { L u=q[ql++]; F(u) if (d[v]==d[u]+w) { sum[v]++; if (!inq[v]) inq[v]=true,q[++qr]=v; } }}int main() { #ifndef ONLINE_JUDGE freopen("test.in","r",stdin); #endif L n,m; read(n),read(m); for (L i=1;i<=m;++i) { L u,v,w; read(u),read(v),read(w); add(u,v,w),add(v,u,w); } spfa(1); check(1); L ans=1; for (L i=1;i<=n;++i) if (sum[i]) (ans*=sum[i])%=Q; printf("%lld\n",ans);}

转载于:https://www.cnblogs.com/ZeonfaiHo/p/6402856.html

你可能感兴趣的文章
beta阶段第六次scrum meeting
查看>>
SpringBoot+MybatisPlus实现批量添加的两种方式
查看>>
vue 设计结构
查看>>
Sqlerver2005+按照ID分组取前几条
查看>>
Python的编码和解码
查看>>
docker
查看>>
停车场系统安全岛设计施工要求
查看>>
Docker实战
查看>>
asp.net core结合Gitlab-CI实现自动化部署
查看>>
RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.7 版本发布
查看>>
EasyNVR H5无插件摄像机直播解决方案前端解析之:关于直播页面和视频列表页面切换的问题...
查看>>
django搭建一个小型的服务器运维网站-拿来即用的bootstrap模板
查看>>
redis事务
查看>>
Java_基础语法之dowhile语句
查看>>
HDU 2175 汉诺塔IX
查看>>
PAT 甲级 1021 Deepest Root
查看>>
查找代码错误.java
查看>>
vc获取特殊路径(SpecialFolder)
查看>>
单例模式
查看>>
int(3)和int(11)区别
查看>>