AOE网上的关键路径——spfa+前向星
来源:互联网 发布:mac死机自动重启 编辑:程序博客网 时间:2024/06/06 09:25
Think:
1知识点:spfa+前向星
2题目分析:字典序最小——逆序建图
——建议参考博客
SDUT题目链接
以下为Accepted代码
#include <bits/stdc++.h>using namespace std;const int Inf = 0x3f3f3f3f;struct node { int v; int w; int next;}edge[50004];queue <int> que;int cnt, head[10004], dis[10004], vis[10004];int pre[10004], in[10004], out[10004];int num, ans[10004];void Add(int u, int v, int w);void spfa(int s, int e, int n);int main(){ int n, m, i, u, v, w; while(scanf("%d %d", &n, &m) != EOF){ cnt = 0; memset(head, -1, sizeof(head)); memset(in, 0, sizeof(in)); memset(out, 0, sizeof(out)); while(m--){ scanf("%d %d %d", &u, &v, &w); Add(v, u, w); in[u]++, out[v]++; } for(i = 1; i <= n; i++){ if(!in[i]) u = i; if(!out[i]) v = i; } spfa(u, v, n); } return 0;}void Add(int u, int v, int w){ edge[cnt].v = v; edge[cnt].w = w; edge[cnt].next = head[u]; head[u] = cnt++;}void spfa(int s, int e, int n){ int i, u, v; memset(dis, -Inf, sizeof(dis)); memset(pre, Inf, sizeof(pre)); memset(vis, 0, sizeof(vis)); while(!que.empty()){ que.pop(); } que.push(s); dis[s] = 0; vis[s] = 1; while(!que.empty()){ u = que.front(); que.pop(); vis[u] = 0; for(i = head[u]; ~i; i = edge[i].next){ v = edge[i].v; if(dis[v] < dis[u] + edge[i].w || (dis[v] == dis[u] + edge[i].w && u < pre[v])){ dis[v] = dis[u] + edge[i].w; pre[v] = u; if(!vis[v]){ vis[v] = 1; que.push(v); } } } } printf("%d\n", dis[e]); num = 0; for(i = e; i != Inf; i = pre[i]) ans[num++] = i; for(i = 1; i < num; i++) printf("%d %d\n", ans[i-1], ans[i]);}/***************************************************User name: Result: AcceptedTake time: 44msTake Memory: 908KBSubmit time: 2017-07-14 19:35:22****************************************************/
阅读全文
1 0
- AOE网上的关键路径 (SPFA+前向星)
- AOE网上的关键路径 (SPFA+前向星)
- AOE网上的关键路径——spfa+前向星
- AOE网上的关键路径-----前向星
- SDUT 2498 AOE网上的关键路径(SPFA 最长路径)
- SDUTOJ 2498 AOE网上的关键路径 最短路spfa
- AOE网上的关键路径【OJ--2498】【SPFA】
- AOE网上的关键路径(拓扑排序+SPFA算法)
- SDUT——2498AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- TCP/IP协议栈的基本工作原理
- 获取JAVA当前进程PID的两种方法
- 算法概论第八章练习题 8.3
- javascript深拷贝和浅拷贝
- Uva10655 Contemplation! Algebra矩阵快速幂
- AOE网上的关键路径——spfa+前向星
- 我要通过!
- k-近邻算法
- zoj 1610 Count the Colors(线段树)(成段更新染色)
- 面试题:合并两个有序链表
- jozj. 3511. 【NOIP2013模拟11.5A组】cza的蛋糕(cake)
- c++primer plus第四版答案第十章
- 微软100题--004
- Vim程序编辑器