Problem Description

一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图。

    AOE(Activity On Edge)网:顾名思义,用边表示活动的网,当然它也是DAG。与AOV不同,活动都表示在了边上,如下图所示:

                                     

    如上所示,共有11项活动(11条边),9个事件(9个顶点)。整个工程只有一个开始点和一个完成点。即只有一个入度为零的点(源点)和只有一个出度为零的点(汇点)。

    关键路径:是从开始点到完成点的最长路径的长度。路径的长度是边上活动耗费的时间。如上图所示,1 到2 到 5到7到9是关键路径(关键路径不止一条,请输出字典序最小的),权值的和为18。

Input

这里有多组数据,保证不超过10组,保证只有一个源点和汇点。输入一个顶点数n(2<=n<=10000),边数m(1<=m <=50000),接下来m行,输入起点sv,终点ev,权值w(1<=sv,ev<=n,sv != ev,1<=w <=20)。数据保证图连通。

Output

关键路径的权值和,并且从源点输出关键路径上的路径(如果有多条,请输出字典序最小的)。


题解:Bellman_Ford 算法可以用来求存在负权回路的最短路问题,对于一般的最短路用迪杰斯特拉算法就可以,但是如果存在了负环,那样可能会求出错误的最短路。Bellman_Ford 算法总来的来说思路我感觉差不多,就像是变形。详见Bellman_Ford算法。

#include <bits/stdc++.h>

using namespace std;

struct node
{
int u,v,w;
}a[50010];
int path[50010];
int dist[50010];
int from[50010];
int to[50010];
void bellman_ford(int s, int n, int m)
{
memset(path,0,sizeof(path));
memset(dist,0,sizeof(dist));
int f = 0;
for(int i = 2; i <= n; i ++)
{
f = 0;
for(int j = 1; j <= m; j ++)
{
int u = a[j].u;
int v = a[j].v;
int w = a[j].w;
if(dist[u] < dist[v] + w || (dist[u] == dist[v] + w && v < path[u]))
{
dist[u] = dist[v] + w;
path[u] = v;
f = 1;
}
}
if(f == 0) break;
}
// cout << s <<endl;
printf("%d\n",dist[s]);
int k = s;
while(path[k] != 0)
{
printf("%d %d\n",k,path[k]);
k = path[k];
}
}
int main()
{
int n,m,u,v,w,s;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(a,0,sizeof(a));
memset(from,0,sizeof(from));
memset(to,0,sizeof(to));
for(int i = 1; i <= m; i ++)
{
scanf("%d%d%d",&u,&v,&w);
a[i].u = u;
a[i].v = v;
a[i].w = w;
from[u] ++;
to[v] ++;
}
for(int i = 1; i <= n; i ++)
{
if(to[i] == 0)
{
s = i;
break;
}
}
bellman_ford(s,n,m);
}
return 0;
}

数据结构实验之图论十一:AOE网上的关键路径【Bellman_Ford算法】的更多相关文章

  1. SDUTOJ 2498 数据结构实验之图论十一:AOE网上的关键路径

    题目链接:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2498.html 题目大意 略. 分析 ...

  2. SDUT OJ 数据结构实验之图论十:判断给定图是否存在合法拓扑序列

    数据结构实验之图论十:判断给定图是否存在合法拓扑序列 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Prob ...

  3. SDUT OJ 数据结构实验之图论八:欧拉回路

    数据结构实验之图论八:欧拉回路 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  4. SDUT OJ 数据结构实验之图论六:村村通公路(最小生成树)

    数据结构实验之图论六:村村通公路 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...

  5. SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss P ...

  6. SDUT OJ 数据结构实验之图论四:迷宫探索

    数据结构实验之图论四:迷宫探索 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  7. 数据结构实验之图论七:驴友计划 ( 最短路径 Dijkstra 算法 )

    数据结构实验之图论七:驴友计划 Time Limit: 1000 ms           Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...

  8. SDUT 3363 数据结构实验之图论七:驴友计划

    数据结构实验之图论七:驴友计划 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 做为一个资深 ...

  9. SDUT 3364 数据结构实验之图论八:欧拉回路

    数据结构实验之图论八:欧拉回路 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 在哥尼斯堡的 ...

随机推荐

  1. Python windows环境 搭建问题

    环境安装包下载地址: https://pan.baidu.com/s/1bnVhHMZ?fid=642139599707514 百度地址: http://sw.bos.baidu.com/sw-sea ...

  2. tree 树形加载及增删改

    //异步1<template> <div class="addequipment org"> <div class="top"&g ...

  3. JavaScript获取页面元素的常用方法

    1.通过标签获取元素,返回一个数组 var li = document.getElementsByTagName('li');//标签获取元素 li[0].innerHTML;// 查看获取元素的内容 ...

  4. AJAX with JSP and Servlet(代码)

    欢迎任何形式的转载,但请务必注明出处. 本章内容来自YouTube需翻墙(点击进入视频学习) 服务器配置等可以参看我其他文章.注释等后续再加 效果图 结构   <body> <fie ...

  5. ABAP Code Inspector那些隐藏的功能,您都知道吗?

    最近有粉丝在后台给我留言,说新知识太多,"学不动了".所谓温故而知新,今天我们就来重温下ABAP里的Code Inspector的用法. 2015年6月,我在SAP社区上写了一篇博 ...

  6. __init__、__new__方法详解

    __init__详解 class Dog(object): def __init__(self): print('init方法') def __del__(self): print('del方法') ...

  7. Python_关键字列表

    1.Python关键字列表

  8. syzkaller安装

    初始环境配置 sudo apt-get install subversion sudo apt-get install g++ sudo apt-get install git sudo apt in ...

  9. Python语言程序设计:Lab4

    Programming 1.Analysing a Text File Look at the file xian_info.txt which is like this: Xi'an China 8 ...

  10. Shell脚本字符串匹配及日常命令工具 - 用法总结(技巧指南)

    Shell提供了很多字符串和文件处理的命令,如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.下面重点总结下Shell字符串处理.文本处理以及各类命令及函数用法 ...