牛客编程巅峰赛S1第6场 - 黄金&钻石&王者 C.星球游戏 (单源最短路,Dijkstra)
2024-09-25 18:32:24
题意:有\(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; }
};
最新文章
- 2000条你应知的WPF小姿势 基础篇<;51-56 依赖属性>;
- Connect to the DSP on C6A8168/DM8168/DM8148 using CCS
- LINQ to SQL语句(13)之开放式并发控制和事务
- Guava - EventBus(事件总线)
- ++i与i++的区别
- C语言-12-日期和时间处理标准库详细解析及示例
- JS创建自定义对象
- js 打开PDF
- java web每天定时执行任务
- iReport中求和的问题
- SCJP_104——题目分析(1)
- is not allowed to connect to this MySQL server
- 学习python及Pygame的安装及运行
- Intellij IDEA 导入Maven项目
- nrf2401 - 最廉价的2.4G无线通信方案
- thinkphp5 Request请求类
- easyui 如何为标签动态追加属性实现渲染效果
- kubelet Pod status的状态分析
- Java compiler level does not match the version of the installed Java project 问题解决
- LeetCode 32 Longest Valid Parentheses(最长合法的括号组合)
热门文章
- &#127881; Element UI for Vue 3.0 来了!
- alter column和modify column
- tomcat控制台运行窗口中文乱码
- 【Software Test】Basic Of ST
- Java中的NIO进阶
- jQuery库 之 jquery slimscroll插件使用
- JS实现鼠标移入DIV随机变换颜色
- Py-解决粘包现象,tcp实现并发,tcp实现传输文件的程序,校验思路,线程与进程
- 大数据系列2:Hdfs的读写操作
- 阿里云ECS hadoop+spark+zookeeper+hive code-server 集群搭建