hdu 1513 Invitation Cards【spfa翻转边】
来源:互联网 发布:fgo花嫁尼禄宝具本数据 编辑:程序博客网 时间:2024/05/20 15:41
题目链接:http://acm.acmcoder.com/showproblem.php?pid=1535
题意:有向图,求源点到各个点最短路径和+各个点到源点最短路径和。
spfa求单源最短路径,求各个点到源点最短路径翻转边。
#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>#include <math.h>#include <string>#include <set>#include <queue>#include <stack>#include <vector>#include <map>using namespace std;const int MAXN = 2000010;const int INF = 1e9+10;struct{ int a, b, c;}Map[MAXN];int t;int n, m, a, b, c;struct Edge{ int v; int cost; Edge(int _v = 0, int _cost = 0) { v = _v; cost = _cost; }};vector<Edge> E[MAXN];void addedge(int u, int v, int cost){ E[u].push_back(Edge(v, cost));}bool vis[MAXN];int cnt[MAXN];int dist[MAXN];void SPFA(int start, int n){ memset(vis, false, sizeof(vis)); for (int i = 1; i <= n; i++) dist[i] = INF; vis[start] = true; dist[start] = 0; queue<int> que; while (!que.empty()) que.pop(); que.push(start); memset(cnt, 0, sizeof(cnt)); cnt[start] = 1; while (!que.empty()) { int u = que.front(); que.pop(); vis[u] = false; for (int i = 0; i<E[u].size(); i++) { int v = E[u][i].v; if (dist[v]>dist[u] + E[u][i].cost) { dist[v] = dist[u] + E[u][i].cost; if (!vis[v]) { vis[v] = true; que.push(v); if (++cnt[v] > n) return; } } } }}int main(){ scanf("%d",&t); while (t--) { scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) E[i].clear(); for (int i = 1; i <= m; i++) { scanf("%d%d%d", &Map[i].a, &Map[i].b, &Map[i].c); addedge(Map[i].a, Map[i].b, Map[i].c); } int ans = 0; SPFA(1, n); for (int i = 1; i <= n; i++) ans += dist[i]; for (int i = 1; i <= n; i++) E[i].clear(); for (int i = 1; i <= m; i++) addedge(Map[i].b, Map[i].a, Map[i].c); SPFA(1, n); for (int i = 1; i <= n; i++) ans += dist[i]; printf("%d\n", ans); } return 0;}
0 0
- hdu 1513 Invitation Cards【spfa翻转边】
- HDU SPFA算法 Invitation Cards
- hdu 1535 Invitation Cards【SPFA】
- HDU 1535 Invitation Cards SPFA
- [HDU 1535]Invitation Cards[SPFA反向思维]
- hdu 1535 Invitation Cards(spfa)
- hdu 1535 Invitation Cards(SPFA)
- 【SPFA邻接表】HDU 1535 Invitation Cards
- HDU-1535-Invitation Cards(SPFA,邻接表)
- hdu 1636 Invitation Cards //spfa 详解;
- 1511--Invitation Cards--Spfa
- SPFA: Invitation Cards
- HDU1535:Invitation Cards(SPFA)
- POJ1511 Invitation Cards【SPFA】
- poj Invitation Cards(spfa)
- Invitation Cards(两次spfa)
- hdu 1535 Invitation Cards ( 做2次spfa )
- HDU 1535 Invitation Cards(有向图单源最短路径+SPFA)
- 高扩展性网站的50条原则(转)-思维导图
- noj算法题——穷举n位二进制数
- DAG模型 矩形嵌套
- 【好程序员笔记分享】——进程和线程
- thinkphp 中空操作和空控制器设置方法
- hdu 1513 Invitation Cards【spfa翻转边】
- 有关【年、月、日】的函数
- python写爬虫
- jpa的复合主键中关系中如何配置才能做到级联删除,我现在的问题是现在有一个学生类一个课程类,下面补充
- 奇异值分解--线性变换几何意义
- Service
- Android 自定义AIDL的实现与通信原理
- POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)
- android字间距实现,textview字间距实现