博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3790 hdoj 3790
阅读量:4120 次
发布时间:2019-05-25

本文共 1282 字,大约阅读时间需要 4 分钟。

最短路径问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1993    Accepted Submission(s): 628
Problem Description
给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。
 
Input
输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。
(1<n<=1000, 0<m<100000, s != t)
 
Output
输出 一行有两个数, 最短距离及其花费。
 
Sample Input
3 21 2 5 62 3 4 51 30 0
 
#include<iostream>
using namespace std;
 
#define INF 100000000
 
int g_d[1001][1001];
int g_c[1001][1001];
int visit[1001];
int dis[1001];
int cost[1001];
int main()
{
      int n,m,s,e,x,y,i,j,d,c;
      while(1)
     {
            cin>>n>>m;
            if(!n&&!m)
                break;
            for(i=0;i<=n;i++)
            {
                  dis[i]=INF;
                  cost[i]=INF;
                  visit[i]=0;
            }
          for(i=0;i<=n;i++)
              for(j=0;j<=n;j++)
             {
                  g_d[i][j]=INF;
                  g_c[i][j]=INF;
             }
         for(i=0;i<m;i++)
        {
             cin>>x>>y;
             cin>>d>>c;
            if(d<g_d[x][y])
           {
                  g_d[y][x]=g_d[x][y]=d;
                  g_c[y][x]=g_c[x][y]=c;
            }
      }
      cin>>s>>e;
      dis[s]=0;
      cost[s]=0;
      for(i=0;i<n;i++)
     {
            int k,min=INF;
            for(j=1;j<=n;j++)
            if(!visit[j]&&min>=dis[j])
           {
                   min=dis[j];
                   k=j;
            }
           visit[k]=1;
           for(j=1;j<=n;j++)
              if(dis[j]>dis[k]+g_d[k][j])
             {
                   dis[j]=dis[k]+g_d[k][j];
                   cost[j]=cost[k]+g_c[k][j];
              }
             else if(dis[j]==dis[k]+g_d[k][j]&&cost[j]>cost[k]+g_c[k][j])
                    cost[j]=cost[k]+g_c[k][j];
              }
  cout<<dis[e]<<' '<<cost[e]<<endl;
 }
 return 0;
}

转载地址:http://vxtpi.baihongyu.com/

你可能感兴趣的文章
后台服务的变慢排查思路(轻量级应用服务器中测试)
查看>>
MySQL中InnoDB事务的默认隔离级别测试
查看>>
微服务的注册与发现
查看>>
bash: service: command not found
查看>>
linux Crontab 使用 --定时任务
查看>>
shell编程----目录操作(文件夹)
查看>>
机器学习-----K近邻算法
查看>>
HBASE安装和简单测试
查看>>
关于程序员的59条搞笑但却真实无比的编程语录
查看>>
搞笑--一篇有趣的文章编译自一篇西班牙博客。有一位美丽的公主,被关押在一个城堡中最高的塔上,一条凶恶的巨龙看守着她,需要有一位勇士营救她…
查看>>
非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)
查看>>
Tomcat启动错误,端口占用
查看>>
laravel 修改api返回默认的异常处理
查看>>
高德坐标转换百度坐标 javascript
查看>>
tp5封装通用的修改某列值
查看>>
laravel控制器与模型名称不统一
查看>>
vue登录拦截
查看>>
npm配置淘宝镜像仓库以及electron镜像
查看>>
linux设置开机自启动脚本的最佳方式
查看>>
VUE SPA 单页面应用 微信oauth网页授权
查看>>