• 题意:有\(n\)个点,\(m\)条双向边,两个方向的权值都是相等的,可以从\(A\)中的某个点出发走到\(B\)中的某个点,求所有路径中的最短距离,如果A和B中没有点联通,则输出\(-1\).

  • 题解:感觉是个阅读理解啊,题目看懂了就是个裸的单源最短路,我们首先将牛牛的所有星球初始化作为起点,然后建边跑个dijkstra,最后再枚举牛妹的星球维护一个最小值即可.

  • 代码:

    class Solution {
    public:
    /**
    *
    * @param niuniu int整型vector 牛牛占领的p个星球的编号
    * @param niumei int整型vector 牛妹占领的q个星球的编号
    * @param path int整型vector<vector<>> m条隧道,每条隧道有三个数分别是ui,vi,wi。ui,vi分别是隧道的两边星球的编号,wi是它们之间的距离
    * @param nn int整型 星球个数n
    * @return int整型
    */
    struct misaka{
    int out;
    int val;
    }e;
    int dis[1000000];
    bool st[1000000];
    vector<misaka> v[1000000];
    priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> h; void dijkstra(){
    while(!h.empty()){
    auto tmp=h.top();
    h.pop(); int num=tmp.second;
    int dist=tmp.first; if(st[num]) continue;
    st[num]=true; for(auto w:v[num]){
    int node=w.out;
    if(dis[node]>w.val+dist){
    dis[node]=w.val+dist;
    h.push({dis[node],node});
    }
    }
    }
    } int Length(vector<int>& niuniu, vector<int>& niumei, vector<vector<int> >& path, int nn) {
    // write code here
    memset(dis,0x3f3f3f3f,sizeof(dis));
    memset(st,false,sizeof(st));
    for(auto w:niuniu){
    dis[w]=0;
    h.push({0,w});
    } for(auto w:path){
    int a=w[0];
    int b=w[1];
    int val=w[2];
    e.out=b,e.val=val;
    v[a].push_back(e);
    e.out=a;
    v[b].push_back(e);
    } dijkstra();
    int ans=0x3f3f3f3f; for(auto w:niumei){
    ans=min(ans,dis[w]);
    } if(ans==0x3f3f3f3f) ans=-1;
    return ans; }
    };

最新文章

  1. 2000条你应知的WPF小姿势 基础篇&lt;51-56 依赖属性&gt;
  2. Connect to the DSP on C6A8168/DM8168/DM8148 using CCS
  3. LINQ to SQL语句(13)之开放式并发控制和事务
  4. Guava - EventBus(事件总线)
  5. ++i与i++的区别
  6. C语言-12-日期和时间处理标准库详细解析及示例
  7. JS创建自定义对象
  8. js 打开PDF
  9. java web每天定时执行任务
  10. iReport中求和的问题
  11. SCJP_104——题目分析(1)
  12. is not allowed to connect to this MySQL server
  13. 学习python及Pygame的安装及运行
  14. Intellij IDEA 导入Maven项目
  15. nrf2401 - 最廉价的2.4G无线通信方案
  16. thinkphp5 Request请求类
  17. easyui 如何为标签动态追加属性实现渲染效果
  18. kubelet Pod status的状态分析
  19. Java compiler level does not match the version of the installed Java project 问题解决
  20. LeetCode 32 Longest Valid Parentheses(最长合法的括号组合)

热门文章

  1. &#127881; Element UI for Vue 3.0 来了!
  2. alter column和modify column
  3. tomcat控制台运行窗口中文乱码
  4. 【Software Test】Basic Of ST
  5. Java中的NIO进阶
  6. jQuery库 之 jquery slimscroll插件使用
  7. JS实现鼠标移入DIV随机变换颜色
  8. Py-解决粘包现象,tcp实现并发,tcp实现传输文件的程序,校验思路,线程与进程
  9. 大数据系列2:Hdfs的读写操作
  10. 阿里云ECS hadoop+spark+zookeeper+hive code-server 集群搭建