- memset(d,0x3f,sizeof d);
- d[x]=0;
- for(int i=1;i
- int u=0;
- for(int j=1;j<=n;j++){
- if(!st[j]&&d[j]
- }
- }
核心代码,目的是为了找在经历了i次松弛操作以后里x点最近的点,只要每次都是找最近的点,最后的距离就一定是最短的,当然dj处理不了负权边
洛谷P3371 【模板】单源最短路径(弱化版)
AC code(普通版n*n)
- #include
- using namespace std;
- typedef pair<int,int> PII;
- const int mod=2147483647;
- int n,m,s;
- int u,v,w;
- vector
vv[100010]; - long long d[10010];
- int st[10010];
-
- void dijkstra(int x){
- memset(d,0x3f,sizeof d);
- d[x]=0;
- for(int i=1;i
- int u=0;
- for(int j=1;j<=n;j++){
- if(!st[j]&&d[j]
- }
- st[u]=1;
- for(auto ed:vv[u]){
- int a=ed.first,b=ed.second;
- if(d[a]>d[u]+b) d[a]=d[u]+b;
- }
- }
- }
-
-
- int main()
- {
- cin>>n>>m>>s;
- for(int i=0;i
- cin>>u>>v>>w;
- vv[u].push_back({v,w});
- }
- dijkstra(s);
- for(int i=1;i<=n;i++){
- if(d[i]<=1e9) cout<
" "; - else cout<
" "; - }
- return 0;
- }
P4779 【模板】单源最短路径(标准版)
堆优化版
- #include
- using namespace std;
- typedef pair<int,int> PII;
- const int mod=2147483647;
- int n,m,s;
- int u,v,w;
- vector
vv[200010]; - long long d[100010];
- int st[100010];
- priority_queue
q; -
-
-
- void dijkstra(int x){
- memset(d,0x3f,sizeof d);
- d[x]=0;q.push({0,x});
- while(q.size()){
- auto t=q.top();q.pop();
- int u=t.second;
- if(st[u]) continue;
- st[u]=1;
- for(auto ed:vv[u]){
- int a=ed.first,b=ed.second;
- if(d[a]>d[u]+b){
- d[a]=d[u]+b;
- q.push({-d[a],a});
- }
- }
- }
- }
-
-
- int main()
- {
- cin>>n>>m>>s;
- for(int i=0;i
- cin>>u>>v>>w;
- vv[u].push_back({v,w});
- }
- dijkstra(s);
- for(int i=1;i<=n;i++){
- if(d[i]<=1e9) cout<
" "; - else cout<
" "; - }
- return 0;
- }
-
相关阅读:
洛谷_P8872
通过yarn快速安装 electron
pod控制器
SpringBoot整合WebService
Matlab:创建分类数组
FAST-LIO2代码解析(四)
【数据结构与算法 | 基础篇】环形数组模拟队列
Python中学习调试requests模块时出现的大坑(1)
如何使用TDengine Sink Connector?
推荐一个windows上传linux服务器/linux服务器的docker镜像的工具,摆脱docker cp,以及解决常见问题。
-
原文地址:https://blog.csdn.net/jia_jia_LL/article/details/137942037