当前位置: 首页 > 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.jsqmd.com/news/46758/

相关文章:

  • 2025年天津中压电缆生产厂家推荐:涵盖变频电缆、聚乙烯绝缘电缆生产厂家!(11月新版)
  • 神经网络从入门到精通 05:CNN初体验:手把手带你搭建时尚单品图像搜索引擎 - 教程
  • 南京市一对一家教机构怎么选?2026年五大机构测评榜出炉!
  • Day28、29:2025年10月18日、19日,周末,休息。
  • CF2165F Arctic Acquisition 题解
  • 2025年什么产品能有效淡化纹路?全肤质淡纹抗老方案出炉
  • 2025年11月天津线缆厂家名单:天津中压、变频、聚乙烯绝缘电缆生产厂家TOP10推荐
  • 2025年哈尔滨心理咨询学校权威推荐榜单:特殊教育/早教中心/口肌训练源头学校精选
  • Day30:2025年10月20日,星期一,值班,诸事皆顺。
  • 收集飞花令碎片——C语言内存函数 - 实践
  • 绍兴一对一课外辅导机构推荐:2025年综合适配度排行榜
  • 绍兴一对一家教辅导机构推荐:2025权威测评排行榜,第一个性价比最高
  • 天门一对一家教机构终极推荐:2026最新辅导机构口碑TOP榜单!真实反馈闭眼选
  • 计算机视觉:YOLO实现目标识别+目标跟踪技术 pyqt界面 OpenCV 计算机视觉 深度学习 计算机(建议收藏)✅ - 指南
  • 2025 年电线电缆厂家 TOP 企业品牌推荐排行榜11月更新:消防 / 耐火 / 防火/ 阻燃 / 阻燃B1级 / 矿物质防火/ 柔性防火 / 低烟无卤火电缆电线推荐!
  • 潜江一对一课外辅导机构推荐,2026最新家教机构排行榜:靠谱不踩坑指南
  • Python的类对象、实例对象、类属性、实例属性、类方法、实例方法
  • 潜江一对一课外补习机构推荐:2026 最新教育机构天花板榜单!提分快还省钱
  • 2026年池州一对一家教机构推荐:五大辅导机构测评排行榜,综合实力全解析!
  • UVA1437 String painter 分析
  • Ubuntu22.04.4安装配置CUDA12.5,Cdnn官方详细版本
  • 2025 年 11 月电缆生产厂家排名出炉!知名品牌推荐 + 天津消防电缆厂家优选指南
  • 2025恩施一对一家教机构综合推荐,提分优选:靠谱方案推荐排行榜
  • 低门槛 + 全周期赋能:天翼云息壤大模型应用服务平台加速千行百业 AI 落地
  • 三层C/S架构的部署图
  • SATA接口调试问题记录
  • 3、步进电机梯形加减速
  • 云鼎未来,智营全局——哲讯科技以SAP Business ByDesign引领中型企业迈向协同运营新纪元
  • 2025 最新除甲醛机构权威推荐榜单:标杆企业技术服务测评解析,新房 / 家具 / 车内 / 办公除醛优选酒店除甲醛 / 室内除甲醛 / 附近除甲醛 / 学校除甲醛公司推荐
  • 超微Supermicro服务器安装英伟达A100,cuda