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

aizu2249最短路Road Construction

时间:2015-03-15 02:02:37      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

题目链接

求让城市1到其他城市在保证最短路的情况下求最小花费,最短路水题。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int INF=1e9;
struct edge
{
    int u,v;
    int len,cost,next;
}e[100010<<2];
int head[100010<<2];
int vis[100010<<2];
int dis[100010<<2];
int ans[100010<<2];
int cnt;
void Initial()
{
    memset(head,-1,sizeof(head));
}
void spfa()
{
    memset(vis,0,sizeof(vis));
    for(int i=1;i<=100010;i++){
        dis[i]=INF;
        ans[i]=INF;
    }
    //memset(ans,1,sizeof(ans));
    //memset(dis,1,sizeof(dis));
    queue<int> que;
    while(!que.empty()){
        que.pop();
    }
    que.push(1);
    vis[1]=1;
    dis[1]=0;
    ans[1]=0;
    while(!que.empty()){
         int d=que.front();
         que.pop();
         vis[d]=0;
         for(int i=head[d];i!=-1;i=e[i].next){
            if(dis[e[i].v]==dis[d]+e[i].len && ans[e[i].v]>e[i].cost){
                ans[e[i].v]=e[i].cost;
            }
            if(dis[e[i].v]>dis[d]+e[i].len){
               dis[e[i].v]=dis[d]+e[i].len;
               ans[e[i].v]=e[i].cost;
               if(!vis[e[i].v]){
                   que.push(e[i].v);
                   vis[e[i].v]=1;
               }
            }

         }
    }

}
int main()
{
    int n,m;
    while(~scanf("%d%d",&n,&m)&& (n!=0 || m!=0)){
        cnt=0;
        Initial();
        for(int i=1;i<=m;i++){
            scanf("%d%d%d%d",&e[cnt].u,&e[cnt].v,&e[cnt].len,&e[cnt].cost);
            e[cnt].next=head[e[cnt].u];
            head[e[cnt].u]=cnt;
            cnt++;
            e[cnt].u=e[cnt-1].v;
            e[cnt].v=e[cnt-1].u;
            e[cnt].cost=e[cnt-1].cost,e[cnt].len=e[cnt-1].len;
            e[cnt].next=head[e[cnt].u];
            head[e[cnt].u]=cnt;
            cnt++;
        }
        spfa();
        int Cost=0;
        for(int i=2;i<=n;i++){
            Cost+=ans[i];
        }
        printf("%d\n",Cost);
    }
    return 0;
}

 

aizu2249最短路Road Construction

标签:

原文地址:http://www.cnblogs.com/Scale-the-heights/p/4338652.html

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