SPFA 邻接表模式
来源:互联网 发布:淘宝模板代码怎么关闭 编辑:程序博客网 时间:2024/06/06 01:57
poj 1511
一个SPFA 题意是:在一个城市里,有n(1~1000000)个运输中心,有m条有向路连接着任意的两个运输中心。ACM组织(位于编号为1的运输中心)要派发p个雇佣员工早上前往这p个运输中心去发传单,晚上再让他们都回到组织中。问所有人所走路程的总和最短是多少?
#include <vector>#include <iostream>#include <string>#include <map>#include <stack>#include <cstring>#include <queue>#include <list>#include <cstdio>#include <set>#include <algorithm>#include <cstdlib>#include <cmath>#include <iomanip>#include <cctype>#include <sstream>#include <functional>using namespace std;#define LL long long#define INF 1000000050#define endl '\n'#define me(x) memset(x,0,sizeof(x));//const LL INF = 1e15;const int maxn=1e3+5;const int maxx=1e6+5;int n,m;struct node{ int e,w,next;}E[maxx],G[maxx];int head1[maxx],head2[maxx];int d[maxx],inq[maxx];LL sum;void init(){ memset(head1,-1,sizeof(head1)); memset(head2,-1,sizeof(head2)); memset(E,0,sizeof(E)); memset(G,0,sizeof(G));}void spfa1(){ queue<int >Q; memset(inq,0,sizeof(inq)); for(int i=0;i<=n;i++) d[i]=INF; Q.push(1),d[1]=0,inq[1]=1; while(!Q.empty()) { int now=Q.front(); Q.pop(); inq[now]=0; for(int i=head1[now];i!=-1;i=E[i].next) { int v=E[i].e; if(d[v]>d[now]+E[i].w) { d[v]=d[now]+E[i].w; if(inq[v]==1) continue; inq[v]=1; Q.push(v); } } } for(int i=1;i<=n;i++) sum+=d[i];}void spfa2(){ queue<int >Q; memset(inq,0,sizeof(inq)); for(int i=0;i<=n;i++) d[i]=INF; Q.push(1),d[1]=0,inq[1]=1; while(!Q.empty()) { int now=Q.front(); Q.pop(); inq[now]=0; for(int i=head2[now];i!=-1;i=G[i].next) { int v=G[i].e; if(d[v]>d[now]+G[i].w) { d[v]=d[now]+G[i].w; if(inq[v]==1) continue; inq[v]=1; Q.push(v); } } } for(int i=1;i<=n;i++) sum+=d[i];}void solve(){ sum=0; scanf("%d%d",&n,&m); init(); for(int i=1;i<=m;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); E[i].e=y; E[i].next=head1[x]; E[i].w=z; head1[x]=i; G[i].e=x; G[i].next=head2[y]; G[i].w=z; head2[y]=i; } spfa1();spfa2(); printf("%I64d\n",sum);}int main(){ int t; scanf("%d",&t); while (t--) { solve(); }}
0 0
- SPFA 邻接表模式
- spfa+邻接表
- SPFA 邻接表
- SPFA+邻接表
- 邻接表的spfa
- cug1697 spfa+邻接表
- [模板]spfa+邻接表
- SPFA + 静态邻接表 模板
- POJ 1511 邻接表+spfa
- HDU-2544(SPFA()邻接表)
- 用邻接表实现spfa
- poj 1511(SPFA+邻接表)
- spfa+队列+邻接表POJ3159
- 邻接表(spfa模版)
- 邻接表存储图的SPFA算法~
- spfa+手写邻接表模板模板
- poj 1511 Invitation Cards (SPFA、邻接表)
- poj1511 spfa(反向保存)+邻接表
- Java nio channel 说明
- 验证码计时器-CountDownTimer
- android 常用Bitmap处理方法收集:普通裁剪,缩放,圆形裁剪
- Windows下基于phpStudy的DVWA web渗透测试漏洞平台搭建
- actionScriptProperties linkType
- SPFA 邻接表模式
- 递推递归练习 A
- 阿里云服务器(CentOS 7.0)如何更改服务器主机名称以及安装配置JDK、Tomcat和Mysql
- 实验吧安全杂项WP(六)
- MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause
- sqlConnection连接不上sql 2000 原来是因为没有打补丁sp4
- 各种网页错误代码解释(400.404.504等) (感觉总结的很全,转过来看看)
- 卸载了curl后yum不能使用,libcurl.so.4: cannot open shared object file: No such file or directory
- jquery中append、prepend, before和after方法的区别(一)