zoukankan      html  css  js  c++  java
  • hdu 2544

    #include<stdio.h>
    #include<string.h>
    #define N 1000
    #define inf 0x7fffffff
    int map[N+10][N+10],cost[N+10][N+10],dis[N+10],fee[N+10],visit[N+10];
    void dijkstra(int s,int t,int n) {
    int i,j;
    memset(visit,0,sizeof(visit));
    for(i=1;i<=n;i++) {
    dis[i]=map[s][i];
    fee[i]=cost[s][i];
    }
    visit[s]=1;
    for(i=1;i<n;i++) {
    int min=inf;
     int u;
     for(j=1;j<=n;j++)
     if(min>dis[j]&&visit[j]==0) {
     min=dis[j];
     u=j;
     }
     visit[u]=1;
     for(j=1;j<=n;j++) {
     if(visit[j]==0&&map[u][j]!=inf) {
     if(dis[j]>dis[u]+map[u][j]) {//先求出一条最短路
     dis[j]=dis[u]+map[u][j];
     fee[j]=fee[u]+cost[u][j];
     }
     else
     if(dis[j]==dis[u]+map[u][j]&&fee[j]>fee[u]+cost[u][j]) //然后再判断费用
     fee[j]=fee[u]+cost[u][j];
     }
     }
     }
    printf("%d %d ",dis[t],fee[t]);
    }
    int main(){
    int n,m,i,j,k,a,b,d,p,s,t;
    while(scanf("%d%d",&n,&m),n||m) {
    for(i=1;i<=n;i++) {
    dis[i]=inf;
    fee[i]=inf;
    for(j=1;j<=n;j++) 
    map[i][j]=inf;
    }
    while(m--) {
    scanf("%d%d%d%d",&a,&b,&d,&p);
    if(map[a][b]>d)  {
    map[a][b]=map[b][a]=d;
    cost[a][b]=cost[b][a]=p;
    }
    else
    if(map[a][b]==d&&cost[a][b]>p) 
    cost[a][b]=cost[b][a]=p;
    }
    scanf("%d%d",&s,&t);
    dijkstra(s,t,n);
    }
    return 0;
    }
  • 相关阅读:
    LINQ查询表达式(1)
    JSON是什么
    .net序列化
    wampserver
    JQuery系列(1)
    c# 数据类型转换
    并不对劲的uoj311.[UNR #2]积劳成疾
    并不对劲的uoj308.[UNR #2]UOJ拯救计划
    并不对劲的CF1349B&C:Game of Median Life
    并不对劲的复健训练-CF1329B&C:Heap Sequences
  • 原文地址:https://www.cnblogs.com/thefirstfeeling/p/4410950.html
Copyright © 2011-2022 走看看