当前位置: 首页 > news >正文

卡码网47:Djikstra算法

算法思想求: “单源最短路径” 的经典算法
1.核心目标是:在无负权边的图中(有向 / 无向均可),高效找到起点到所有节点的最短路径。
2.每次选择距离(原点集)最近的点,加入原点集(标记)
3.更新各点到原点最近距离

条件:图中所有边的权重都是非负数

题目
https://kamacoder.com/problempage.php?pid=1047
代码(朴素)

include<bits/stdc++.h>

using namespace std;
int n,m;
const int N=501;
int pic[N][N];
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>n>>m;
for(int i=0;i<m;i++)
{
int a,b,c;
cin>>a>>b>>c;
pic[a][b]=c;
}
vectorisuse(n+1,false);
vectordis(n+1,INT_MAX);
dis[1]=0;
for(int i=1;i<=n;i++)
{
int mindis=INT_MAX;
int cur=0;
for(int j=1;j<=n;j++)
{
if(!isuse[j]&&dis[j]<mindis)
{
mindis=dis[j];
cur=j;
}
}
isuse[cur]=1;
for(int k=1;k<=n;k++)
{
if(!isuse[k]&&pic[cur][k]!=0&&(dis[cur]+pic[cur][k]<dis[k]))
{
dis[k]=dis[cur]+pic[cur][k];
}
}

}
if(dis[n]==INT_MAX)
{cout<<-1;return 0;
}
cout<<dis[n];
return 0;

}
堆优化(可以将每次找到原点集最近的点步骤省略)

include<bits/stdc++.h>

using namespace std;
int n,m;
class mycomparision
{
public:
bool operator()(const pair<int,int>& lhs,const pair<int,int>& rhs)
{
return lhs.second>rhs.second;
}

};
struct Edge
{
int to;
int val;
Edge(int t,int w):to(t),val(w){}
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int p1,p2,val;
cin>>n>>m;
vector<list>grid(n+1);
for(int i=0;i<m;i++)
{
cin>>p1>>p2>>val;
grid[p1].push_back(Edge(p2,val));
}
int start=1;
int end=n;
vectorminDist(n+1,INT_MAX);
vectorvisited(n+1,false);
priority_queue<pair<int,int>,vector<pair<int,int>>,mycomparision>pq;
pq.push(pair<int,int>(start,0));
minDist[start]=0;
while(!pq.empty())
{
pair<int,int> cur=pq.top();
pq.pop();
if(visited[cur.first])continue;
visited[cur.first]=1;
for(Edge edge:grid[cur.first])
{
if(!visited[edge.to]&&minDist[cur.first]+edge.val<minDist[edge.to])
{
minDist[edge.to]=minDist[cur.first]+edge.val;
pq.push(pair<int,int>(edge.to,minDist[edge.to]));
}
}
}

if(minDist[end] == INT_MAX) cout << -1 << endl; // 不能到达终点
else cout << minDist[end] << endl; //

}

//priority_queue(优先队列->堆)
朴素O(n^2)
堆优化O(mlogn)(m->边,n->点);

http://www.gsyq.cn/news/56448.html

相关文章:

  • CF2165F Arctic Acquisition 题解
  • 2025年哈尔滨心理咨询学校权威推荐榜单:特殊教育/早教中心/口肌训练源头学校精选
  • Day30:2025年10月20日,星期一,值班,诸事皆顺。
  • 绍兴一对一家教辅导机构推荐:2025权威测评排行榜,第一个性价比最高
  • 天门一对一家教机构终极推荐:2026最新辅导机构口碑TOP榜单!真实反馈闭眼选
  • 计算机视觉:YOLO实现目标识别+目标跟踪技术 pyqt界面 OpenCV 计算机视觉 深度学习 计算机(建议收藏)✅ - 指南
  • 潜江一对一课外补习机构推荐:2026 最新教育机构天花板榜单!提分快还省钱
  • 2025恩施一对一家教机构综合推荐,提分优选:靠谱方案推荐排行榜
  • SATA接口调试问题记录
  • 镜头分辨率如何匹配工业相机的分辨率
  • 洛谷 B4410:[GESP202509 一级] 金字塔 ← 循环结构
  • CF246E bfs 序上莫队
  • 小型食品厂省心了!CLC-S22R 控温又省成本​
  • 2025 最新推荐装盒机厂家权威排行榜:全自动 / 食品 / 纸巾 / 卫生巾装盒机技术创新与整线配套能力测评
  • Galera Cluster部署 - 详解
  • 模拟机问题
  • 2025年主流学习机品牌差异化分析与选购指南
  • 6667
  • 2025年铁基络合剂源头厂家权威推荐榜单:铁基催化剂/络合铁脱硫催化剂/高效脱硫剂源头厂家精选
  • 学习差的孩子适合用学习机吗?有推荐的品牌吗?​ 2025年学困生专用AI学习机评估与推荐
  • 2025年AI学习机与线下补课效果对比分析
  • FCN全卷积网络 (Fully Convolutional Network)——第一个成功地将深度学习应用于语义分割
  • 写给0-1岁的初创公司合伙人(48):运气与概率——区分“赌博”与“投资”
  • 2025年PET收缩机源头厂家权威推荐榜单:PET自动收缩机/PP收缩机/PE收缩机源头厂家精选
  • 【Ai自习室创业靠谱吗,有推荐的加盟/代理品牌吗?】2025年智适应自习室创业投资深度解析
  • 成都恒利泰国产H3-TCP-2-10+ 功分器替代Mini-CircuitsTCP-2-10+
  • 网页前端 加水印
  • CAN网关的作用到底是什么?(转载)
  • macos虚拟机-演示篇三配置clover/opencore引导
  • 2025年智适应Ai自习室市场前景与加盟投资指南