SPFA求最短路

syzoj.com 最短路径问题

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
vector<int>a[100001],b[100001];
queue<int>bfs;
int dis[100001];
int main(){
    memset(dis,127,sizeof(dis));
    dis[1]=0;
    int n,m;
    cin>>n>>m;
    int u,v,c;
    for(int i=1;i<=m;i++){
        cin>>u>>v>>c;
        a[u].push_back(v);
        b[u].push_back(c);
    }
    bfs.push(1);
    while(!bfs.empty()){
        int city=bfs.front();
        bfs.pop();
        int num=a[city].size();
        for(int i=0;i<num;i++){
        int next=a[city][i];
        int next_c=b[city][i];
        if(dis[next]>dis[city]+next_c){
            dis[next]=dis[city]+next_c;
                bfs.push(next);
            }
        }
    }
    cout<<dis[n];
    return 0;
}

 

 
posted @ 2017-10-01 15:20  TimDucan  阅读(128)  评论(0编辑  收藏  举报