poj 1511 Invitation Cards (SPFA、邻接表)
来源:互联网 发布:宾得镜头 知乎 编辑:程序博客网 时间:2024/05/02 00:14
第一次写SPFA,小激动一下。。。
http://poj.org/problem?id=1511
#include "iostream"#include "stdio.h"#include "queue"#include "string.h"using namespace std;const int MAX = 1000010;const int INF = 1e9;struct edge{int s, e;int val;int nextedge;};struct edge edges1[MAX], edges2[MAX];long long dis[MAX]; //各点到起点的距离int adj1[MAX];int adj2[MAX];bool in_queue[MAX];queue <int> Que;void AddEdge(int s, int e, long long val, int adj[], struct edge edges[], int *lp){ (*lp)++;edges[*lp].s = s;edges[*lp].e = e;edges[*lp].val = val;edges[*lp].nextedge = adj[s];adj[s] = *lp; //记录起点为s的链表的头结点}void SPFA(int nStops, int nRoads, int S, int adj[], struct edge edges[]){int i, h, p, v; memset(in_queue, false, sizeof(in_queue));for(i = 0; i <= nStops; i++){dis[i] = INF;}dis[S] = 0; in_queue[S] = true;Que.push(S);while(!Que.empty()){h = Que.front();Que.pop();in_queue[h] = false;for(p = adj[h]; p != -1; p = edges[p].nextedge){v = edges[p].e;if(dis[v] > dis[h] + (long long)edges[p].val){dis[v] = dis[h] + (long long)edges[p].val;if(!in_queue[v]){Que.push(v);in_queue[v] = true;}}}}}int main(){int T, i, j;int s, e;int val;cin >> T;while(T--){int nStops, nRoads;int lp1 = 0, lp2 = 0;scanf("%d%d", &nStops, &nRoads); memset(adj1, -1, sizeof(adj1)); memset(adj2, -1, sizeof(adj2));//分别建立正向和反向图for(i = 1; i <= nRoads; i++){scanf("%d%d%d", &s, &e, &val);AddEdge(s, e, val, adj1, edges1, &lp1);AddEdge(e, s, val, adj2, edges2, &lp2);}long long sum = 0;SPFA(nStops, nRoads, 1, adj1, edges1);for(i = 1; i <= nStops; i++)sum += dis[i];SPFA(nStops, nRoads, 1, adj2, edges2);for(i = 1; i <= nStops; i++)sum += dis[i]; printf("%lld\n", sum);}return 0;}
- poj 1511 Invitation Cards (SPFA、邻接表)
- Poj 1511- Invitation Cards(Spfa+邻接表)
- SPFA邻接表-POJ-1511-Invitation Cards
- poj 1511 Invitation Cards (spfa + 邻接表)
- poj 1511 Invitation Cards 静态邻接表的SPFA
- POJ 1511 Invitation Cards SPFA+正反邻接表
- poj 1511 Invitation Cards (spfa+邻接表)
- POJ-1511(Invitation Cards )——spfa+邻接表
- POJ 1511 Invitation Cards 邻接表 spfa算法
- POJ 1511 Invitation Cards(正反图两次SPFA&邻接表)
- POJ-1511 Invitation Cards (SPFA算法+邻接表)
- POJ 1511 Invitation Cards (spfa + 静态邻接表)
- PKU 1511 Invitation Cards (SPFA+邻接表)
- poj 1511 Invitation Cards(spfa + 邻接表 + 反向思维t)
- poj 1511 Invitation Cards(SPFA)(矩阵以及邻接表对比)
- POJ 1511 Invitation Cards //spfa
- poj 1511 Invitation Cards--SPFA
- POJ 1511 Invitation Cards (Spfa)
- DWR的异常处理及session过期
- Ubuntu桌面版讨论使用全局菜单和取消的命令
- 入侵软件学习
- sql 连接字符串大全
- 2003 计划任务
- poj 1511 Invitation Cards (SPFA、邻接表)
- 分布式 [ mpi 安装 与 执行]
- oracle tnsnames 配置文件
- Server 2008 下AjaxPro JS未定义错误处理
- intent 和 Broadcast Receiver之间的通信
- 笨小猴
- .net实现多关键字查询方法
- Matlab画图命令介绍
- CSS常用属性