JZYZOJ1525 HAOI2012道路 堆优化的dijkstra+pair
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define pa pair<int,int>
const int mymod=;
const int bign=;
int n,m;
struct wtff{
int y;
int next;
int zhi;
}wtf[];
int head[]={};
int tail=;
long long ans[]={};
long long a[]={};
long long b[]={};
int c[]={};
long long dis[]={};
bool vis[]={};
void init(int x,int y,int zhi){
wtf[++tail].next=head[x];
wtf[tail].zhi=zhi;
wtf[tail].y=y;
head[x]=tail;
}
void jiuming(int st){
priority_queue< pa,vector<pa>,greater<pa> >q;
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++){
dis[i]=bign;
}
dis[st]=;
q.push(make_pair(,st));
int cn=;
while(!q.empty()){
int x=q.top().second;
q.pop();
if(vis[x]){
continue;
}
vis[x]=;
c[++cn]=x;
for(int i=head[x];i!=;i=wtf[i].next){
int y;
y=wtf[i].y;
if(dis[x]+wtf[i].zhi<dis[y]){
dis[y]=dis[x]+wtf[i].zhi;
q.push(make_pair(dis[y],y));
}
}
}
memset(a,,sizeof(a));
memset(b,,sizeof(b));
a[st]=;
for(int i=;i<=cn;i++){
b[c[i]]=;
}
for(int i=;i<=cn;i++){
for(int w=head[c[i]];w!=;w=wtf[w].next){
int y=wtf[w].y;
if(dis[c[i]]+wtf[w].zhi==dis[y]){
a[y]+=a[c[i]];
if(a[y]>mymod){
a[y]%=mymod;
}
}
}
}
for(int i=cn;i>=;i--){
for(int w=head[c[i]];w!=;w=wtf[w].next){
int y=wtf[w].y;
if(dis[c[i]]+wtf[w].zhi==dis[y]){
b[c[i]]+=b[y];
if(b[c[i]]>mymod){
b[c[i]]%=mymod;
}
}
}
}
for(int i=;i<=n;i++){
for(int w=head[i];w!=;w=wtf[w].next){
int y=wtf[w].y;
if(dis[i]+wtf[w].zhi==dis[y]){
ans[w]+=(a[i]*b[y]);
if(ans[w]>mymod){
ans[w]%=mymod;
}
}
}
}
}
int main(){
cin>>n>>m;
for(int i=;i<=m;i++){
int a1,b1,c1;
cin>>a1>>b1>>c1;
init(a1,b1,c1);
}
for(int i=;i<=n;i++){
jiuming(i);
}
for(int i=;i<=m;i++){
cout<<ans[i]<<endl;
}
return ;
}
JZYZOJ1525 HAOI2012道路 堆优化的dijkstra+pair的更多相关文章
- 堆优化的Dijkstra
SPFA在求最短路时不是万能的.在稠密图时用堆优化的dijkstra更加高效: typedef pair<int,int> pii; priority_queue<pii, vect ...
- POJ1797 Heavy Transportation (堆优化的Dijkstra变形)
Background Hugo Heavy is happy. After the breakdown of the Cargolifter project he can now expand bus ...
- 朴素版和堆优化版dijkstra和朴素版prim算法比较
1.dijkstra 时间复杂度:O(n^2) n次迭代,每次找到距离集合S最短的点 每次迭代要用找到的点t来更新其他点到S的最短距离. #include<iostream> #inclu ...
- 学习笔记·堆优化$\mathscr{dijkstra}$
嘤嘤嘤今天被迫学了这个算法--其实对于学习图论来说我内心是拒绝的\(\mathscr{qnq}\) 由于发现关于这个\(\mathscr{SPFA}\)的时间复杂度\(O(kE)\)中的\(k \ap ...
- 堆优化的dijkstra算法
#include<bits/stdc++.h> using namespace std; #define ll long long #define P pair<int,int> ...
- 【模板】堆优化的dijkstra
生命算法,以防忘记 #include<bits/stdc++.h> using namespace std; int head[200005],dis[200005],n,m,s,f,g, ...
- 洛谷 P1462 通往奥格瑞玛的道路(二分答案,堆优化dijkstra)
传送门 解题思路 首先看题目问题,求经过的所有城市中最多的一次收取的费用的最小值是多少.一看“最大值最小”就想到了二分答案. 在读一遍题目,就是二分收取的费用,然后对于每一个二分的费用,跑一边最短路, ...
- POJ-2387.Til the Cows Come Home.(五种方法:Dijkstra + Dijkstra堆优化 + Bellman-Ford + SPFA + Floyd-Warshall)
昨天刚学习完最短路的算法,今天开始练题发现我是真的菜呀,居然能忘记邻接表是怎么写的,真的是菜的真实...... 为了弥补自己的菜,我决定这道题我就要用五种办法写出,并在Dijkstra算法堆优化中另外 ...
- 【51nod1443】路径和树(堆优化dijkstra乱搞)
点此看题面 大致题意:给你一个无向联通图,要求你求出这张图中从u开始的权值和最小的最短路径树的权值之和. 什么是最短路径树? 从\(u\)开始到任意点的最短路径与在原图中相比不变. 题解 既然要求最短 ...
随机推荐
- 用create-react-app来快速配置react
最近在学react,然后感觉自己之前用的express+gulp+webpack+ejs的工作环境还是基于html+js+css这种三层架构的应用,完全跟react不是一回事. 愚蠢的我居然在原先的这 ...
- Islands and Bridges(POJ2288+状压dp+Hamilton 回路)
题目链接:http://poj.org/problem?id=2288 题目: 题意:求Hamilton 路径权值的最大值,且求出有多少条权值这么大的Hamilton路径. 思路:状压dp,dp[i] ...
- G6踩坑日记
用G6去完成一整个图例的时候,当包裹它的容器满足不了包裹的需求时,我们就需要引入缩略图来解决问题了 缩略图使用方式很简单 引入插件配置就可以了 当我们使用多张图片进行绘图(G6支持使用图片进行构图,原 ...
- FastStoneCapture(FSCapture)录屏、剪辑教程
FastStoneCapture软件编辑视频的使用方法: http://www.tudou.com/programs/view/2eD-s5HP1xw/
- Entity Framework 5.0 Code First全面学习 (转)
原文地址:感谢原文作者 http://blog.csdn.net/gentle_wolf/article/details/14004345 不贴图片了,太累. Code First 约定 借助 Cod ...
- MessageDigest类实现md5加密
项目中用到的md5工具类: package com.mall.util; import org.springframework.util.StringUtils; import java.securi ...
- 斐讯路由器L(联)B(壁)K-码兑换包安全下车通道(图文教程)
大家好,最近大家比较关心的斐讯路由器如何下车问题,楼主亲自试提取了一遍,记录下过程,欢迎大家一起讨论. 言归正传,上图,上图! No.1 打开斐讯提供的良心k码退换通道: https://tech-s ...
- linux和windows下TIME_WAIT过多的解决办法
http://www.51testing.com/html/48/202848-249774.html linux和windows下TIME_WAIT过多的解决办法 http://m.sohu.com ...
- MySQL-开发规范升级版
一.基础规范 表存储引擎必须使用InnoDB 表字符集默认使用utf8,必要时候使用utf8mb4 解读: (1)通用,无乱码风险,汉字3字节,英文1字节 (2)utf8mb4是utf8的超集,有 ...
- 【LOJ】#2349. 「JOI 2017/2018 决赛」团子制作
题解 有意思的一个dp,我们对G计数,发现如果不在同一条对角线上的G肯定不会互相影响,所以我们对于每一条对角线dp dp的方式是枚举这个G以什么方式放,横着还是竖着,还是不放 代码 #include ...