L2-001 紧急救援 (25 分)
传送门
一开始想用bfs过的但是冲不过去,后面改用迪杰斯特拉了,发现它只是考你熟不熟悉这个,考代码功底
#include<bits/stdc++.h>
using namespace std;
const int N=550,M=N*N;
#define int long long
int h[N],e[M],ne[M],w[M],idx,n,m,a[N],s,t;
void add(int a,int b,int c){e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++;
}
int vis[N],st[N];
int d[N];
queue<int>q;
typedef pair<int,int> PII;
int mp[N][N];
int fa[N];
int cnt[N];
int sum[N];
void bfs(){d[s]=0;fa[s]=-1;sum[s]=a[s];cnt[s]=1;for(int i=0;i<n;i++){int u=-1;for(int j=0;j<n;j++){if(!st[j]&&(u==-1||d[u]>d[j]))u=j;}st[u]=1;for(int j=0;j<n;j++){if(d[j]>d[u]+mp[u][j]){d[j]=d[u]+mp[u][j];cnt[j]=cnt[u];sum[j]=sum[u]+a[j];fa[j]=u;}else if(d[j]==d[u]+mp[u][j]){cnt[j]+=cnt[u];if(sum[j]<sum[u]+a[j]){sum[j]=sum[u]+a[j];fa[j]=u;}}}}
// q.push(s);
// while(q.size()){// int u=q.front();
// q.pop();
// for(int i=h[u];~i;i=ne[i]){// int j=e[i];
// //if(vis[j])continue;
// if(d[j]>d[u]+w[i]){// q.push(j);
// cnt[j]=1;
// sum[j]=a[j]+sum[u];
// d[j]=d[u]+w[i];
// fa[j]=u;
// }
// else if(d[j]==d[u]+w[i]){// cnt[j]+=cnt[u];
// if(sum[j]<sum[u]+a[j]){// sum[j]=sum[u]+a[j];
// fa[j]=u;
// }// }
// }
// }
}
signed main(){memset(h,-1,sizeof h);memset(d,0x3f,sizeof d);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>m>>s>>t;for(int i=0;i<n;i++)cin>>a[i];memset(mp,0x3f,sizeof mp);while(m--){int x,y,z;cin>>x>>y>>z;add(x,y,z);add(y,x,z);mp[x][y]=mp[y][x]=z;}bfs();cout<<cnt[t]<<" "<<sum[t]<<'\n';vector<int>v;while(fa[t]!=-1){v.push_back(t);t=fa[t];}reverse(v.begin(),v.end());cout<<s;for(int i=0;i<v.size();i++)cout<<" "<<v[i];}
L2-001 紧急救援 (25 分)相关推荐
- 天梯赛:L2-001 紧急救援 (25 分)
题目详情 - L2-001 紧急救援 (25 分) (pintia.cn) 题解:使用dijkstra算法就可以了,难点在于如何存储路径.我首先十分单纯的用了pair<int,int>进行 ...
- 5-35 城市间紧急救援 (25分) pat 数据结构
题目连接 https://pta.patest.cn/pta/test/15/exam/4/question/862 5-35 城市间紧急救援 (25分) 作为一个城市的应急救援队伍的负责人,你有 ...
- 【CCCC】L2-001 紧急救援 (25分),,Dijkstra标准模板(多路径,最大点权和路径打印)
problem L2-001 紧急救援 (25分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两 ...
- 天梯赛 L2-001 紧急救援 (25 分)
单元最短路+最短路数量+最大点权和+输出路径 L2-001 紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每 ...
- PTA7-12 城市间紧急救援 (25 分)(dijkstra+dp)(简单易懂的写法)
PTA7-12 城市间紧急救援 (25 分) 关于这个题呢,我当时也想了很久没有一点头绪.所以,菜鸡的我一如既往的打开了CSDN(手动滑稽).我看了很多大佬的写法,最普遍的应该就是dijkstra+d ...
- 7-11 城市间紧急救援 (25 分)
7-11 城市间紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速 ...
- 紧急救援 (25 分)
L2-001 紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道 ...
- 5-35 城市间紧急救援 (25分)
5-35 城市间紧急救援 (25分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道 ...
- L2-001 紧急救援 (25 分)最短路径 迪杰斯特拉算法
L2-001 紧急救援 题目 代码 题目 L2-001 紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城 ...
- L2-001 城市间紧急救援 (25分)(迪杰斯特拉算法)
L2-001 城市间紧急救援 (25分)(迪杰斯特拉算法) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一 ...
最新文章
- PHP判断文件是否被引入的方法get_included_files
- python心得1000字-经典教材《统计学习导论》现在有了Python版
- 利用 Arthas 精准定位 Java 应用 CPU 负载过高问题
- 关于DSP开发的步骤
- 346雷达有多少tr组件_有源相控阵的天线设计的核心:T/R组件
- Spring集成CXF发布WebService并在客户端调用
- Julia的安装与配置详解(包含在Ubuntu 18.04和Windows 10系统上Julia的安装)
- 设计模式 AOP 面向切入编程
- 洛谷P3642 [APIO2016]烟火表演
- Java 工程师修炼之道
- grandMA2 onPC 3.1.2.5的DMX参数摸索
- 手动安装高可用k8s集群(二进制)v1.23.4版本
- AutoCAD 描图方法小结
- 微信小程序录制视频方法踩坑总结
- 经典算法研究系列:七、深入浅出遗传算法
- 2022网络搭建国赛NIS 服务器搭建
- PyTorch :transforms 数据增强:裁剪、翻转、旋转
- 再来一个小游戏——原生js逐句解释开发简易版别踩白块,附源码
- 2017年第二十二届华南国际口腔展览会会刊(参展商名录)
- gava cach_CACHÉ2010访谈