- 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;
- }
-
相关阅读:
抖音预约服务小程序开发:前端与后端技术的完美融合
Python数据分析教程(二):Pandas
HDFS重要特性
线程死锁与检测
使用Arduino开发板进行语音识别
Oracle 的LogMiner
golang正则regexp包使用-05-扩展Expand()、根据正则切割Split()
offline 2 online | AWAC:基于 AWR 的 policy update + online 补充数据集
聊天机器人(Ajax实现聊天机器人接口的调用)
MySQL:锁机制
-
原文地址:https://blog.csdn.net/jia_jia_LL/article/details/137942037