SPFA模板

 今天去听2015ZJOI浙江省队第二试的集训,早上就是听得云里雾里的ORZ,下午某两集训队大神过来将题目,第一个进了IOI的我只听懂了10%ORZ,第二个人机交互很好玩,找个时间单独写下。

   顺便附带膜拜各位聚聚,保我明天ZJOI不爆0........

   ORZZLD ORZYSY ORZWYH ORZCJH ORZZZQ

好了切入正题——

============================华丽的分割线=====================

今天我们来打打SPFA模板。

去年NOIP我SPFA之前突击了下然后day2果然我就用spfa坑了T2 60分,简直了,然而T1写跪了,其实没啥区别。然后我就发现SPFA挺重要的,这几天重新捡起来看看。

先(发)上代码再说

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int MAX=10000;
 4 struct node {
 5     int to,w,next;
 6 }edge[MAX];
 7 bool used[MAX];
 8 int outqueue[MAX],head[MAX],low[MAX],n,m;
 9 bool spfa(int start) {
10     queue<int> q;
11     used[start]=1;
12     low[start]=0;
13     q.push(start);
14     while(!q.empty()) {
15         int top=q.front();
16         q.pop();used[top]=0;
17         outqueue[top]++;
18         if(outqueue[top]>n) return 0;
19         for (int k=head[top];k!=-1;k=edge[k].next)
20             if(low[edge[k].to]>low[top]+edge[k].w) {
21                 low[edge[k].to]=low[top]+edge[k].w;
22                 if(!used[edge[k].to]) {
23                     used[edge[k].to]=1;
24                     q.push(edge[k].to);
25                 }
26             }
27     }
28     return 1;
29 }
30 int main() {
31     memset(used,0,sizeof(used));
32     memset(head,-1,sizeof(head));
33     memset(outqueue,0,sizeof(outqueue));
34     memset(low,2100000,sizeof(low));
35     scanf("%d%d",&n,&m);
36     for (int i=1,k=0; i<=m; ++i) {
37         int from,to,wei;
38         scanf("%d%d%d",&from,&to,&wei);
39         edge[k].to=to;
40         edge[k].w=wei;
41         edge[k].next=head[from];
42         head[from]=k++;
43     }
44     if(spfa(1)) printf("%d\n",low[n]);
45     else printf("存在负权环!\n");
46     return 0;
47 }
View Code

 

===========================================================

P.S:2015/5/22修改:原来的那份网络上的模板用完并没有将used清零,导致了一些小错误。

今天在动车(高铁)上好好理解了下SPFA,弄明白了:

next数组存的是和当前边一个起点的下/上一条边。

head[i]存的是以i为起点有多少条边。

w就不用讲了,边的权值。

SPFA的复杂度为O(kE),k是常数,所以经常被fzyz的orz神牛们使用。

===========================================================

其实SPFA也不难,就那样,有点小坑

我是开了个结构体,个人不太喜欢(习惯)写指针,以前写指针跪了好多,果然指针没学好。。。

我都不用指针的,除非万不得已,然而万不得已没有出现过。

——wyh大聚聚

我都喜欢用指针,因为“->”看起来很有美感。。

——cjh大聚聚

好吧话题跑歪了,下面列出可以参考的列表

http://blog.csdn.net/chenjiang492943457/article/details/5375413

http://www.cnblogs.com/devtang/archive/2011/08/25/spfa.html

http://baike.baidu.com/link?url=O0QvxbOY8SVBjrIl6nF6EvMHSslgcEIxfXSoty5SbkA7QjbWZjTWARzwTQsKKbSD5mlASljndZrqYjle_qwcmq

然而我发现SPFA还有优化!!!

LLL和SLF,改天去看看,然后再写个模板

 

最后声明下我并不是ZJ的 = =|||

转载于:https://www.cnblogs.com/TonyNeal/p/SPFAtem.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript 中的闭包和作用域链(读书笔记)

要想理解闭包&#xff0c;应当先理解JavaScript的作用域和作用域链。 JavaScript有一个特性被称之为“声明提前&#xff08;hoisting&#xff09;”&#xff0c;即JavaScript函数里声明的所有变量&#xff08;但不涉及赋值&#xff09;都被“提前”至函数体的顶部&#xff0c;“…

韩师师范学院计算机科学与技术在哪个学区,2017年韩山师范学院本科插班生考试《数据结构》A卷...

韩山师范学院2017年本科插班生考试试卷计算机科学与技术 专业 数据结构 试卷(A 卷)一、单项选择题(每题2分&#xff0c;共30分)1. 对线性表&#xff0c;在下列哪种情况下应当采用链表表示&#xff1f;( ) A. 经常需要随机地存取元素 B. 经常需要进行插入和删除操作 C. 表中元素…

JAVA取随机数,石头剪刀布实例

一、取随机数&#xff1a; import java.util.Random; //导入随机数 public class Test{public static void main(String[] args){Random xx new Random(); //声明随机数int number xx.nextInt(10); //赋值随机数给numberSystem.out.println("随机数…

第一阶段

初步实现了相机的调用&#xff0c;做了简单界面&#xff0c;并没有实现核心功能 Button button (Button) findViewById(R.id.sao);button.setOnClickListener(new OnClickListener(){Overridepublic void onClick(View v) {Intent intent new Intent(MediaStore.ACTION_IMAGE…

JavaScript 详说事件机制之冒泡、捕获、传播、委托

DOM事件流&#xff08;event flow &#xff09;存在三个阶段&#xff1a;事件捕获阶段、处于目标阶段、事件冒泡阶段。 事件捕获&#xff08;event capturing&#xff09;&#xff1a;通俗的理解就是&#xff0c;当鼠标点击或者触发dom事件时&#xff0c;浏览器会从根节点开始…

很棒的HTML5效果实例

2019独角兽企业重金招聘Python工程师标准>>> http://mrdoob.com/141/Internet_Explorer_with_WebGL 转载于:https://my.oschina.net/u/3647620/blog/1552495

计算机一级网络操作题没点回答,计算机等级一级考试操作题1(附答案)

一、选择题1、在计算机领域中通常用mips来描述______。a、计算机的运算速度 b、计算机的可靠性 c、计算机的可运行性 d、计算机的可扩充性2、微型计算机存储系统中&#xff0c;prom是______。a、可读写存储器 b、动态随机存取存储器 c、只读存储器 d、可编程只读存储器3、按161…

分配的访问权限的展台应用:最佳做法

原文: 分配的访问权限的展台应用&#xff1a;最佳做法 best practices guidance for developing a kiosk app for assigned access. 在 Windows 10 中&#xff0c;你可以使用锁屏框架和分配的访问权限创建展台应用&#xff0c;该应用允许用户与设备上的单个应用进行交互。 本文…

SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的解决方案...

今天写了一个excel表的导入功能&#xff0c;结果在excel表中的内容导入到页面时报错&#xff1a;SQL Server 阻止了对组件 Ad Hoc Distributed Queries 的 STATEMENTOpenRowset/OpenDatasource 的访问&#xff0c;因为此组件已作为此服务器安全配置的一部分而被关闭。系统管…

Mongo客户端MongoVUE的基本使用

这里没有涉及到服务器以及客户端的安装&#xff0c;文章主要介绍mongo客户端mongoVUE的使用 一、数据库连接 点击绿色加号添加一个连接&#xff0c;输入name、server、port&#xff0c;点击save&#xff0c;点击connect进行连接 二、添加 1.右键添加一个Database 2.输入名称&am…

Vim杂记:Sublime的配色方案

一、前言                                     爱美之心人皆有之&#xff0c;sublime的配色实在好看&#xff0c;于是希望Vim也能这样。 二、配置                                     1.下载monok…

计算机一级考试有三科,全国计算机一级考试是一级WPS Office 一级MS Office 一级Photoshop 三个任选一个考试吗?...

满意答案nanrrui3j2017.08.24采纳率&#xff1a;41% 等级&#xff1a;9已帮助&#xff1a;415人全国计算机一级考试是有考试大纲的&#xff0c;按照大纲要求是三科都考。一级MS Office、一级WPS Office、一级Photoshop&#xff0c;一级共三个科目。完全采取上机考试形式&…

Docker学习(三):镜像

2019独角兽企业重金招聘Python工程师标准>>> 1、简介 docker运行前需要本地存在对应的镜像&#xff0c;若镜像不存在本地&#xff0c;docker会先尝试从默认的镜像仓库下载&#xff08;Docker Hub公共注册服务器中的仓库&#xff09;。用户也可以配置&#xff0c;使用…

系统流程图

转载于:https://www.cnblogs.com/ADCARRY/p/5462270.html

一年级下册计算机教学计划,【实用】一年级下册教学计划4篇

【实用】一年级下册教学计划4篇光阴迅速&#xff0c;一眨眼就过去了&#xff0c;我们的教学工作又将抒写新的篇章&#xff0c;写好教学计划才不会让我们努力的时候迷失方向哦。相信大家又在为写教学计划犯愁了吧&#xff0c;下面是小编精心整理的一年级下册教学计划4篇&#xf…

PowerDesigner中NAME和COMMENT的互相转换,需要执行语句

原文&#xff1a;http://www.cnblogs.com/yelaiju/archive/2013/04/26/3044828.html由于PDM 的表中 Name 会默认Code 所以很不方便, 所以需要将 StereoType 显示到表的外面来 打开[工具]->[显示属性](英文:Display Preferences) ->Content->Table->右边面板Columns…

成都计算机中心起名,成都给宝宝起名的地方哪里好

成都给宝宝起名的地方哪里好2018-09-21每一个人都拥有一个好听大气的名字&#xff0c;名字作为一个人的标识&#xff0c;是人与人交流的代号&#xff0c;因此有一个好听寓意大气的名字是很关键的&#xff0c;名字毕竟关乎着对他人的第一印象&#xff0c;所以在起名字方面父母们…

20150206--JS巩固与加强4-02

20150206--JS巩固与加强4-02 五、属性遍历与删除 1、使用for…in…遍历自定义对象属性 基本语法&#xff1a; for…in…&#xff08;主要是完成对对象的遍历&#xff09; 示例代码: 运行效果&#xff1a; 说明&#xff1a;在17行代码&#xff0c;不能使用p1.i形式进行自定义对象…

面向对象课程 - T-shirt

拿到了一件谜一样的T-shirt 吓得我赶紧捏了下hbb 转载于:https://www.cnblogs.com/andwho/p/5465165.html

状态开关(ToggleButton)

状态开关&#xff08;ToggleButton&#xff09;&#xff1a; 常用属性&#xff1a;isChecked&#xff08;是否被选中&#xff0c;如true&#xff09; 监听&#xff1a;1.监听方法&#xff1a;setOnCheckedChangeListener 2.监听器&#xff1a;CompoundButton.OnCheckedChangeLi…