码迷,mamicode.com
首页 > 数据库 > 详细

POJ 3255 Roadblocks

时间:2014-12-21 22:06:19      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

求次短路

 

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
#define INF 0xfffffff
#define maxn 5060

struct Edge
{
    int e, w;
    Edge(int e=0,int w=0): e(e), w(w) {}
};

int n, m;
int dist[2][maxn];
int vis[maxn];

vector<Edge> G[maxn];

void  Spfa(int Star,int k)
{
    Edge P, Pn;
    queue <Edge> Q;
    dist[k][Star] = 0;
    Q.push( Edge(Star,0) );

    while( !Q.empty() )
    {
        P = Q.front();
        Q.pop();
        vis[P.e] = false;
        int len = G[P.e].size();

        for(int i=0; i<len; i++)
        {
            Pn = G[P.e][i];

            if(dist[k][Pn.e] > dist[k][P.e] + Pn.w )
            {
                dist[k][Pn.e] = dist[k][P.e] + Pn.w;

                if(!vis[Pn.e] )
                {
                    Q.push(Pn);
                    vis[Pn.e] = true;
                }
            }
        }
    }
}
int Slove()
{
    int ans = INF;
    int Min = dist[0][n];
    Edge P;
    for(int i=1; i<=n; i++)
    {
        int len = G[i].size();

        for(int j=0; j<len; j++)
        {
            P = G[i][j];
            int temp = dist[0][i] + dist[1][P.e] + P.w;
            if(temp > Min && temp < ans)
                ans = temp;
        }
    }
    return ans;
}
void Init()
{
    for(int i=1; i<=n; i++)
    {
        G[i].clear();
        vis[i] = false;
        dist[0][i] = dist[1][i] = INF;
    }
}
int main()
{
    while(cin >> n >> m)
    {
        int a, b, c;
        Init();
        for(int i=0; i<m; i++)
        {
            scanf("%d%d%d",&a,&b,&c);
            G[a].push_back( Edge(b,c) );
            G[b].push_back( Edge(a,c) );
        }

        Spfa(1,0);
        Spfa(n,1);

        int ans = Slove();

        cout << ans << endl;

    }
    return 0;
}

 

POJ 3255 Roadblocks

标签:

原文地址:http://www.cnblogs.com/chenchengxun/p/4176986.html

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