码迷,mamicode.com
首页 > 其他好文 > 详细

SPFA模板

时间:2015-05-22 00:25:01      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

 今天去听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();
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

 

其实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的 = =|||

SPFA模板

标签:

原文地址:http://www.cnblogs.com/TonyNeal/p/SPFAtem.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!