POJ 1511 链式前向星+SPFA
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
const int maxn=1000010,inf=1000000000;
long long ans;
int e,to[maxn],next[maxn],begin[maxn],w[maxn];
int e1,to1[maxn],next1[maxn],begin1[maxn],w1[maxn];
int d[maxn],p[maxn],q[maxn*50];
int m,n,f,l;
void add(int x,int y,int z){
to[++e]=y;
next[e]=begin[x];
begin[x]=e;
w[e]=z;
}
void add1(int x,int y,int z){
to1[++e1]=y;
next1[e1]=begin1[x];
begin1[x]=e1;
w1[e1]=z;
}
int main(){
int i,j,k,m,n;
int t;
scanf("%d",&t);
while(t--){
int i,j,k,x,y,z;
scanf("%d%d",&n,&m);
e=0;e1=0;
for(i=1;i<=n;i++){begin[i]=0;begin1[i]=0;}
for(i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
add1(y,x,z);
}
for(i=1;i<=n;i++){
d[i]=inf;
p[i]=0;
}
f=0;l=1;
d[1]=0;q[1]=1;p[1]=1;
while(f<l){
f++;
k=q[f];p[k]=0;
for(i=begin[k];i;i=next[i])
if(d[to[i]]>d[k]+w[i]){
d[to[i]]=d[k]+w[i];
if(!p[to[i]]){
q[++l]=to[i];
p[to[i]]=1;
}
}
}
ans=0;
for(i=1;i<=n;i++)ans+=d[i]; for(i=1;i<=n;i++){
d[i]=inf;
p[i]=0;
}
f=0;l=1;
d[1]=0;q[1]=1;p[1]=1;
while(f<l){
f++;
k=q[f];p[k]=0;
for(i=begin1[k];i;i=next1[i])
if(d[to1[i]]>d[k]+w1[i]){
d[to1[i]]=d[k]+w1[i];
if(!p[to1[i]]){
q[++l]=to1[i];
p[to1[i]]=1;
}
}
}
for(i=1;i<=n;i++)ans+=d[i];
printf("%I64d\n",ans);
}
return 0;
}
POJ 1511 链式前向星+SPFA的更多相关文章
- 链式前向星+SPFA
今天听说vector不开o2是数组时间复杂度常数的1.5倍,瞬间吓傻.然后就问好的图表达方式,然后看到了链式前向星.于是就写了一段链式前向星+SPFA的,和普通的vector+SPFA的对拍了下,速度 ...
- POJ 3169 Layout(差分约束+链式前向星+SPFA)
描述 Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 ...
- 【模板】链式前向星+spfa
洛谷传送门--分糖果 博客--链式前向星 团队中一道题,数据很大,只能用链式前向星存储,spfa求单源最短路. 可做模板. #include <cstdio> #include <q ...
- POJ 1511 Invitation Cards 链式前向星+spfa+反向建边
Invitation Cards Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 27200 Accepted: 902 ...
- POJ 2387 链式前向星下的SPFA
(POJ)[http://poj.org/problem?id=2387] Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K ...
- 洛谷 P3371 【模板】单源最短路径 【链式前向星+SPFA】
题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数.出发点的编号. 接下来M行每行包含三 ...
- 单元最短路径算法模板汇总(Dijkstra, BF,SPFA),附链式前向星模板
一:dijkstra算法时间复杂度,用优先级队列优化的话,O((M+N)logN)求单源最短路径,要求所有边的权值非负.若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的 ...
- UESTC30-最短路-Floyd最短路、spfa+链式前向星建图
最短路 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) 在每年的校赛里,所有进入决赛的同 ...
- 最短路 spfa 算法 && 链式前向星存图
推荐博客 https://i.cnblogs.com/EditPosts.aspx?opt=1 http://blog.csdn.net/mcdonnell_douglas/article/deta ...
随机推荐
- Graph Cut
转自:http://blog.csdn.net/zouxy09/article/details/8532111 Graph Cut,下一个博文我们再学习下Grab Cut,两者都是基于图论的分割方法. ...
- Vue 2.0 生命周期-钩子函数理解
Vue 2.0 + 生命周期钩子在项目过程中经常用到,所以闲下来整理了下,直接复制下面的实例运行: <!DOCTYPE html> <html lang="en" ...
- 开源IDS系列--【2015】获取snort vrt 规则(talo)
1.在snort网站注册 2.注册成功后,会在个人信息中生成:Oinkcode 3.https://www.snort.org/rules/snortrules-snapshot-2973.tar.g ...
- Linux上安装MongoDB
使用本教程使用.rpm 软件包在红帽企业Linux或CentOS Linux版本6和7上安装MongoDB Community Edition . 平台支持 本安装指南仅支持64位系统.详细信息请参见 ...
- Nodejs Bot学习
关于示例部分可以参考<BotFramework Nodejs示例><BotBuilder Nodejs示例查看> Bot Framework Nodejs SDK包括几种与用户 ...
- Flume学习应用:Java写日志数据到MongoDB
概述 Windows平台:Java写日志到Flume,Flume最终把日志写到MongoDB. 系统环境 操作系统:win7 64 JDK:1.6.0_43 资源下载 Maven:3.3.3下载.安装 ...
- 在class中获取web资源
背景介绍 项目中用jasperreport做报表,模板文件为web资源,不在classpath之中.class又需要获取模板文件,结合数据源,生成pdf格式的报表. 之前的做法是定义一个public ...
- 线段树+二进制位拆分【CF242E】XOR on Segment
Description 给定一个长为\(n(n<=10^5)\)的数组 数组里的数不超过\(10^6\) 有两种操作: 1:求\(sum[l,r]\); 2:对\([l,r]\)中的所有数和\( ...
- Poj3468 A Simple Problem with Integers (分块)
题面 Poj 题解 区间求和\(+\)区间修改板子,这里用分块写的 #include <cmath> #include <cstdio> #include <cstrin ...
- leetcode88 Merged Sorted Array
题意:两个已排好序的数组,合并成新的数组. 解题思路:刚开始做题,完全找不到思路,想用最简单的插入法做,提示超时了大概是for用多了哈哈··看了下别人的方法果断佩服,利用好已排序这个特点,从后往前添加 ...