首页 > 其他 > 详细

POJ 3159 最短路 SPFA

时间:2015-08-15 18:09:46      阅读:207      评论:0      收藏:0      [点我收藏+]
#include<iostream>
using namespace std;
const int nMax = 30005;
const int mMax = 150005;
const int inf = 1000000000;
 
struct node{
    int v, w, next;
}edge[mMax];
int n, edgeHead[nMax], dict[nMax];
int stack[nMax];
bool vis[nMax];
 
void spfa(){
    for(int i = 2; i <= n; i ++)
        dict[i] = inf;
    dict[1] = 0;
    int top = 0;     //  spfa的堆栈实现模板。
    stack[++ top] = 1;
    vis[1] = true;
    while(top){
        int u = stack[top --];
        for(int p = edgeHead[u]; p != 0; p = edge[p].next){
            int v = edge[p].v;
            if(dict[v] > dict[u] + edge[p].w){
                dict[v] = dict[u] + edge[p].w;
                if(!vis[v]){
                    vis[v] = true;
                    stack[++ top] = v;
                }
            }
        }
        vis[u] = false;
    }
}
 
int main(){
    int m, i;
    scanf("%d%d", &n, &m);
    int k = 1;
    while(m --){
        int u, v, w;
        scanf("%d%d%d", &u, &v, &w);
        edge[k].v = v;
        edge[k].w = w;
        edge[k].next = edgeHead[u];
        edgeHead[u] = k ++;
    }
    spfa();
    printf("%d\n", dict[n]);
    return 0;
}

POJ 3159 最短路 SPFA

原文:http://www.cnblogs.com/wazqWAZQ1/p/4662560.html

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