首页 > 其他 > 详细

spfa

时间:2015-05-29 13:31:28      阅读:234      评论:0      收藏:0      [点我收藏+]
 1 #define INF 0x7f7f7f7f
 2 int vis[N];
 3 int d[N];
 4 int num_nodes;
 5 int q[n*2];
 6 int pre[N];
 7 
 8 struct node
 9 {
10     int from,to,next,w;
11 }e[1000];
12 
13 int head[maxn];
14 int tot;
15 
16 void add(int s,int u,int w)
17 {
18     e[tot].from=s;
19     e[tot].to=u;
20     e[tot].w=w;
21     e[tot].next=head[s];
22     head[s]=tot++;
23 }
24 
25 void spfa(int s){
26     for(int i=1;i<=num_nodes;i++){
27         d[i]=INF;
28     }
29     memset(vis,0,sizeof(vis));
30     memset(pre,0,sizeof(pre));
31     int front ,rear;
32     front = rear = 0;
33     q[rear++]= s;
34     d[s]=0;
35     pre[s]=-1;
36     int u;
37     while(front<rear){
38         u = q[front++];
39         v[u] = 0;
40         for(int i=0;i<g[u].size();i++){
41             int k=e[i].to;
42             if(d[u]+e[i].w<d[k])
43             {
44                 pre[k]=i;
45                 d[k]=d[u]+e[i].w;
46                 if(!v[k])
47                 {
48                     v[k]=1;
49                     q[rear++]=k;
50                 }
51             }
52 
53         }
54     }
55 }

 

spfa

原文:http://www.cnblogs.com/ackiller/p/4538137.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!