当前位置: 首页 > news >正文

HDU 2680 Choose the best route(多起点单终点最短路问题)题解

题意:小A要乘车到s车站,他有w个起始车站可选,问最短时间。

思路:用Floyd超时,Dijkstra遍历,但是也超时。仔细看看你会发现这道题目好像是多源点单终点问题,终点已经确定,那么我们可以直接转置邻接矩阵,从终点找最小的起点,转换成了单源最短路问题。

代码:

#include<cstdio>
#include<set>
#include<cmath>
#include<stack>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn = 1000+5;
const int INF = 0x3f3f3f3f;
int mp[maxn][maxn];
int dis[maxn];
int vis[maxn];
int n,m;
void dijkstra(int st){
    memset(vis,0,sizeof(vis));
    memset(dis,INF,sizeof(dis));
    dis[st] = 0;
    for(int i = 1;i <= n;i++){
        int Min = INF,k = 0;
        for(int j = 1;j <= n;j++){
            if(!vis[j] &&  dis[j] < Min){
                Min = dis[j];
                k = j;
            }
        }
        vis[k] = 1;
        for(int j = 1;j <= n;j++){
            if(dis[j] > dis[k] + mp[k][j]){
                dis[j] = dis[k] + mp[k][j];
            }
        }
    }
}


int main(){
    int s;
    while(scanf("%d%d%d",&n,&m,&s) != EOF){
        memset(mp,INF,sizeof(mp));
        while(m--){
            int u,v,w;
            scanf("%d%d%d",&u,&v,&w);
            mp[v][u] = min(mp[v][u],w);
        }
        dijkstra(s);
        int ans = INF;
        scanf("%d",&m);
        while(m--){
            int u;
            scanf("%d",&u);
            ans = min(ans,dis[u]);
        }
        if(ans == INF) printf("-1\n");
        else printf("%d\n",ans);
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/KirinSB/p/9415457.html

相关文章:

  • 【iOS-Cocos2d游戏开发】使用Zwoptex生成plist文件
  • 初始Windows系统
  • 西方酒馆(一)
  • Nodejs----基本数据类型
  • Objective-C属性介绍
  • PAT 1061 判断题(15)(代码)
  • 【iOS-Cocos2d游戏开发】使用cocosBuiler制作cocos2d场景
  • 面试题——存储引擎
  • HTML(XHTML)基础知识(二)——【body】
  • 《性能测试诊断分析与优化》推荐序(2)
  • Go实现发送解析GET与POST请求
  • 转新浪微博 Facebook新园区黑客之路
  • N天学习一个Linux命令之dmesg
  • 数据越权访问,谁之错?
  • Spring STS Call Hierarchy 查找不到被调用的信息
  • [case10]使用RSQL实现端到端的动态查询
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 「面试题」如何实现一个圣杯布局?
  • go append函数以及写入
  • JAVA_NIO系列——Channel和Buffer详解
  • pdf文件如何在线转换为jpg图片
  • php的插入排序,通过双层for循环
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 反思总结然后整装待发
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 你真的知道 == 和 equals 的区别吗?
  • 使用SAX解析XML
  • 思考 CSS 架构
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • #pragma once与条件编译
  • #QT(TCP网络编程-服务端)
  • (JS基础)String 类型
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (算法二)滑动窗口
  • (已解决)什么是vue导航守卫
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)Linux下编译安装log4cxx
  • ****Linux下Mysql的安装和配置
  • *Django中的Ajax 纯js的书写样式1
  • .bat文件调用java类的main方法
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET上SQLite的连接
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • ??eclipse的安装配置问题!??
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • [BZOJ] 2044: 三维导弹拦截
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh
  • [CTF]php is_numeric绕过
  • [Docker]十.Docker Swarm讲解
  • [GN] Vue3.2 快速上手 ---- 核心语法2
  • [Gradle] 在 Eclipse 下利用 gradle 构建系统