当前位置: 首页 > 编程日记 > 正文

sdut AOE网上的关键路径(spfa+前向星)

http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2498&cid=1304

题目描述

一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图。 
    AOE(Activity On Edge)网:顾名思义,用边表示活动的网,当然它也是DAG。与AOV不同,活动都表示在了边上,如下图所示:
                                     
    如上所示,共有11项活动(11条边),9个事件(9个顶点)。整个工程只有一个开始点和一个完成点。即只有一个入度为零的点(源点)和只有一个出度为零的点(汇点)。
    关键路径:是从开始点到完成点的最长路径的长度。路径的长度是边上活动耗费的时间。如上图所示,1 到2 到 5到7到9是关键路径(关键路径不止一条,请输出字典序最小的),权值的和为18。

输入

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

输出

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

示例输入

9 11
1 2 6
1 3 4
1 4 5
2 5 1
3 5 1
4 6 2
5 7 9
5 8 7
6 8 4
8 9 4
7 9 2

示例输出

18
1 2
2 5
5 7
7 9

题目分析:
由题意可以知道这是要求从起点s到终点e的最长路径,因为有10000个点,有50000条边,用spfa进行最短路,但是有一个问题就是要求路径的字典序最小。
如果正向建图的话,
比如下图:如果现在终点是6,现在2和3都能使6的距离达到最大且值相同。我们处理的时候会选2,但还是2这条路径却不是最优的,反而3是最优的。
所以我们逆向见图,求一个最短路然后倒着输出就好了。

解决方式:

倒序建图,当松弛时(u,v),遇到相同的情况,尽量使u变的更小,那么最终得到就是最小的字典序。

对于求最长路径,将dis设为-INF,dis[s] = 0

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#define inf 0x3f3f3f3f
#define maxx 200001
using namespace std;
struct node
{int x,y,c,next;
} eg[maxx];
int n,m,flag,tt,pre[20002],ru[20002],ch[20002],dis[20002],v[20002],head[20002];
void init()
{tt=0;flag=0;memset(ru,0,sizeof(ru));memset(ch,0,sizeof(ch));memset(head,-1,sizeof(head));
}
void add(int xx,int yy,int zz)
{eg[tt].x=xx;eg[tt].y=yy;eg[tt].c=zz;eg[tt].next=head[xx];head[xx]=tt++;
}
void SPFA(int s,int e)
{int ff;v[s]=1;queue<int>q;while(!q.empty())q.pop();for(int i=1; i<=n; i++){dis[i]=-inf;pre[i]=-1;v[i]=0;}dis[s]=0;q.push(s);while(!q.empty()){ff=q.front();q.pop();v[ff]=0;for(int i=head[ff]; i!=-1; i=eg[i].next){int vv=eg[i].y;int w=eg[i].c;if(dis[ff]+w>dis[vv]){pre[vv]=ff;//
                dis[vv]=dis[ff]+w;if(v[vv]==0){q.push(vv);v[vv]=1;}}else if(dis[ff]+w==dis[vv]&&pre[vv]>ff){pre[vv]=ff;if(v[vv]==0){v[vv]=1;q.push(vv);}}}}cout<<dis[e]<<endl;int T=e;while(T!=s){printf("%d %d\n",T,pre[T]);T=pre[T];}
}
int main()
{int xx,yy,zz,RU,CH;while(scanf("%d%d",&n,&m)!=EOF){init();for(int i=0; i<m; i++){scanf("%d%d%d",&xx,&yy,&zz);add(yy,xx,zz);ru[xx]++;ch[yy]++;}for(int i=1; i<=n; i++){if(ru[i]==0)RU=i;if(ch[i]==0)CH=i;}SPFA(RU,CH);}return 0;
}

相关文章:

苹果新功能惹网友众怒,还有隐私可言吗?

编译 | 禾木木出品 | AI科技大本营(ID:rgznai100)大部分人选择 iPhone 的一大理由就是信息安全&#xff0c;这家公司对于个人隐私的保护一直为人称赞。最近苹果公司宣布&#xff0c;为了让儿童能够更加安全地上网&#xff0c;他们决定在iOS 15、iPADOS 15、macOS Monterey系统中…

让Ubuntu拥有SUSE一样的GRUB启动界面

SUSE的漂亮大家可能都见识过&#xff0c;尤其是那个Grub启动画面。我身边的朋友为了在自己的系统上也能使用SUSE的GRUB启动画面&#xff0c;用了一种原理比较简 单&#xff0c;过程比较白痴的方法&#xff1a;先安装SUSE&#xff0c;把/boot单独分区&#xff0c;然后把除了/boo…

计算机编程简史图

计算机编程简史图www.21kaiyun.com 21世纪开运网 算准你每天的桃花运 帮忙推广下我的网站 谢谢

HTML5 模板推荐

http://www.yundic.com/转载于:https://www.cnblogs.com/lsl8966/p/4133484.html

Windows 11 再惹“众怒”!网友:微软就是逼我去买新电脑!

整理 | 郑丽媛出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;一般来说&#xff0c;不论是移动还是桌面操作系统&#xff0c;如若要升级版本&#xff0c;大多用户都不会产生过大的抵触情绪&#xff0c;毕竟更新往往都是为了确保用户获得最佳体验。但近来用户对微软…

刚学习了linux的DHCP 配置.呵呵.自己上来总结下.

先来看DHCP的工作原理.DHCP (Dynamic Host Configuration Protocol)下面的部分是google找的....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~DHCP来自ITwiki&#xff0c;开放的信息技术大百科DHCP是Dynamic Host Configuration Protocol的…

App_Offline.htm 一个静态页面实现整站维护时统一页面

在ASP.NET 2.0 站点根目录下&#xff0c;只要存在 App_Offline.htm 文件&#xff0c;那么所有对.aspx的请求都将转向App_Offline.htm 。而且浏览器的地址栏显示的是所请求的.aspx的URL。 这样当我们的站点需要维护时&#xff0c;只要把App_Offline.htm 拷贝到站点根目录下即…

C++编程思想重点笔记(上)

C和C指针的最重要的区别在于&#xff1a;C是一种类型要求更强的语言。就void *而言&#xff0c;这一点表现得更加突出。C虽然不允许随便地把一个类型的指针指派给另一个类型&#xff0c;但允许通过void *来实现。例如&#xff1a; bird* b;rock* r;void* v;v r;b v; C不允许…

一行命令实现录屏,支持热键和鼠标操作,区域、帧率、格式任你选择

作者&#xff1a;天元浪子来源&#xff1a;CSDN 博客市面上的录屏工具软件有很多&#xff0c;基本都是窗口程序。毕竟&#xff0c;离开GUI的支持&#xff0c;设置参数、选择录像区域等操作都会变得非常困难。不过&#xff0c;窗口程序也并非无往不胜&#xff0c;即便是屏幕录像…

SMO学习笔记(二)——还原(恢复)篇之完整恢复

SQLSERVER2005恢复介绍&#xff1a; 三种恢复模式(一).简单恢复模式 事务日志被自动截断&#xff0c;不能使用日志文件进行恢复。(二).完整恢复模式 保留所有操作的完整事务日志。(三).大容量日志恢复模式 简要记录大容量操作&#xff08;索引创建和大容…

linux内核map图

linux内核map图

Linux下tcpdump用法

根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤&#xff0c;并提供了and、 or、not等逻 辑语句来帮助过滤不必要的信息&#xff1b;   默认情况下&#…

终于有人站出来为程序员说话了

【CSDN 编者按】刘少山博士是《程序员》杂志的作者之一&#xff0c;多年来投稿了大量无人驾驶领域相关的优质内容&#xff0c;《新程序员》上线后&#xff0c;他带着自己多年来对技术行业的思考以及对程序员群体的殷切期望重新回归&#xff0c;希望能对大家有所启迪。作者 | 刘…

给 Windows 驱动程序安装提速

对比各种主流操作系统&#xff0c;在 Windows 上安装驱动程序是最直观最方便的&#xff0c;不仅可以通过设备管理器查看所有硬件的信息并安装驱动&#xff0c;在有新硬件插入时也有人性化的驱动程序安装提示和安装向导&#xff0c;甚至还可以在线安装驱动&#xff0c;这都是其他…

web标准化设计:常用的CSS命名规则

常用的CSS命名规则 头&#xff1a;header 内容&#xff1a;content/container 尾&#xff1a;footer 导航&#xff1a;nav 侧栏&#xff1a;sidebar 栏目&#xff1a;column 页面外围控制整体布局宽度&#xff1a;wrapper 左右中&#xff1a;left right center 登录条&#xff…

鲲鹏应用创新大赛山西区域赛圆满落幕,鲲鹏生态助力信创变革

鲲鹏入晋&#xff0c;万里腾飞&#xff0c;8 月 6 日&#xff0c;2021 鲲鹏应用创新大赛山西赛区决赛在太原圆满落幕。今年鲲鹏应用创新大赛区域赛山西赛区是山西省内数字化转型的重要赛事&#xff0c;经过层层选拔&#xff0c;共 35 个队伍进入山西赛区决赛&#xff0c;参加政…

视频分享网站首页:最新视频特效

2019独角兽企业重金招聘Python工程师标准>>> <!DOCTYPE> <html> <head><title></title><style>.newVideo{width:208px;height:116px;border:0px solid #000; position:relative;cursor:pointer;}.newVideoImg{position:relativ…

Metasploit攻击Oracle的环境搭建

Metasploit中关于Oracle的攻击模块默认并不完全&#xff0c;需要自己做一些工作。本文主要记录在搭建环境的中的一些错误&#xff08;操作系统Backtrack 5&#xff09;。在默认情况下使用oracle的一些攻击功能会出现类似如下错误&#xff1a;ary module execution completed m…

jQuery / jQuery mvc plugin

jMVC专为 Qt WRT 设计。Qt WRT 将随新版Qt发布&#xff0c;支持 Symbian ^3 和 Meego 设备。jMVC 采用延迟加载设计&#xff0c;代码分布在不同的.js文件中&#xff0c;调用时通过xhr加载。 在web环境中会严重影响性能&#xff0c;所以jMVC不适合开发web site。目前大部分web b…

【转发】什么时候该用委托,为什么要用委托,委托有什么好处

好多人一直在问:什么时候该用委托,为什么要用委托,委托有什么好处.... 看完下面的文章你将茅塞顿开..(看不懂的直接TDDTDS) 概念虽然我不喜欢讲太多 我们直接先来YY 个场景:我很喜欢打游戏,但运气不好每次打游戏都会被主管看到,朱老板不喜欢他的员工在上班的时 间打游戏,所以朱…

一位合格软件工程师应该具备怎样的工程化、交付能力?

大厂待遇高、福利也好相信很多同学都对大厂有着向往&#xff0c;然而现实却是......有的同学成功拿到offer进入大厂&#xff0c;有的同学还在为备考大厂迷茫苦恼着&#xff1a;我之前从未面试过&#xff0c;这次冒险投了字节&#xff0c;几乎是抱着积累经验和技术交流的心态去了…

Flex通信-Java服务端通信实例

Flex与Java通信的方式有很多种&#xff0c;比较常用的有以下方式&#xff1a; WebService&#xff1a;一种跨语言的在线服务&#xff0c;只要用特定语言写好并部署到服务器&#xff0c;其它语言就可以调用 HttpService&#xff1a;通过http请求的形式访问服务器 RmoteObject&am…

jQuery性能优化指南

1&#xff0c;总是从ID选择器开始继承 在jQuery中最快的选择器是ID选择器&#xff0c;因为它直接来自于JavaScript的getElementById()方法。 例如有一段HTML代码&#xff1a; <div id"content"> <form method"post" action"#"> &l…

速度快到飞起 如何跟蜻蜓的大脑学习计算?

编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 科学家研究了其中一种大型昆虫蜻蜓的大脑&#xff0c;希望利用这些昆虫的专长来设计计算系统&#xff0c;这些系统针对拦截来袭导弹或跟踪气味羽流等任务进行了优化。通过利用蜻蜓神经系统的速度、简单性和效率&#xff0c;目…

Python、Unicode和中文

python的中文问题一直是困扰新手的头疼问题&#xff0c;这篇文章将给你详细地讲解一下这方面的知识。当然&#xff0c;几乎可以确定的是&#xff0c;在将来的版本中&#xff0c;python会彻底解决此问题&#xff0c;不用我们这么麻烦了。先来看看python的版本&#xff1a;>&g…

提高mysql性能的开源软件

今天发现一个开源软件,看介绍可以提高mysql的性能,这个东西就是Google的开源TCMalloc库,于是拿来装了下看看效果.这个软件下载地址是:http://code.google.com/p/google-perftools/downloads/list,我用的是最新版的google-perftools-1.4.tar.gz.1.安装过程:#tar zxvf google-per…

一款比较实用齐全的jQuery 表单验证插件

一款比较实用,并且验证类型齐全的jQuery表单验证插件.英文版原作者Vanadium,由我做中文整理.E文水平有限,如果翻译的有问题的,请大家指出,在此感谢~可以验证哪些? 文字,日期,邮箱,网址,数字,AJAX用户名验证以及自定义的正则等等几乎所有我们要用到的验证.不多说,看DEMO吧: 点此…

[原]VS2012编译GLEW 1.11

1、到http://glew.sourceforge.net/下载源代码 2、使用vs2012打开build下vc6的glew.dsw &#xff0c;自动生成2012工程&#xff08;一路点确定&#xff09;特别注意&#xff1a;不要使用build下的vc12之类的 本人亲测不好使 坑了我很久 3、直接生成解决方案&#xff0c;会在根目…

长相酷似小强的小米「铁蛋」机器狗,售价 9999 元,打滚唱跳会空翻

整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 8月10日晚&#xff0c;雷军年度演讲及小米秋季发布会在线上召开&#xff0c;此次发布会足足讲了三个小时&#xff0c;不仅介绍了小米的目前市场状况&#xff0c;还分享了新品以及小米机器人实验室的第一款产品——机器狗「铁…

java中图片文件的判断

javax.imageio 类 ImageIO BufferedImage bi ImageIO.read(resFile);//resFile --- InputStreamif(bi null){ System.out.println(此文件不为图片文件); }try {//判断是否为图片文件并且返回图片的格式&#xff01;ImageInputStream iis ImageIO.createImageInputStream(o)…