[BZOJ] 2763: [JLOI2011]飞行路线

本文介绍了一种解决分层图最短路径问题的方法,通过在传统的最短路径算法基础上增加一层维度来处理。使用SPFA算法进行路径计算,并通过实例展示了如何构造图结构并求解从起点到终点的最短路径。

分层图最短路,和冻结几乎一样。

在dis的基础上添加一维即可。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
 
using namespace std;
 
inline int rd(){
    int ret=0,f=1;char c;
    while(c=getchar(),!isdigit(c))f=c=='-'?-1:1;
    while(isdigit(c))ret=ret*10+c-'0',c=getchar();
    return ret*f;
}
 
const int MAXN=10006;
 
struct Edge{
    int next,to,w;
}e[1000000];
int ecnt,head[MAXN];
inline void add(int x,int y,int w){
    e[++ecnt].next = head[x];
    e[ecnt].to = y;
    e[ecnt].w = w;
    head[x] = ecnt;
}
 
int n,m,num;
int S,T;
 
queue<int> Q,Qk;
int dis[MAXN][11],inq[MAXN][11];
void spfa(){
    memset(dis,0x3f,sizeof(dis));
    Q.push(S);Qk.push(0);dis[S][0]=0;inq[S][0]=1;
    while(!Q.empty()){
        int top=Q.front();Q.pop();int tmp=Qk.front();Qk.pop();
        inq[top][tmp]=0;
        for(int i=head[top];i;i=e[i].next){
            int v=e[i].to;
            if(dis[v][tmp]>dis[top][tmp]+e[i].w){
                dis[v][tmp]=dis[top][tmp]+e[i].w;
                if(!inq[v][tmp]) Q.push(v),Qk.push(tmp),inq[v][tmp]=1;
            }
            if(tmp<num&&dis[v][tmp+1]>dis[top][tmp]+0){
                dis[v][tmp+1]=dis[top][tmp]+0;
                if(!inq[v][tmp+1]) Q.push(v),Qk.push(tmp+1),inq[v][tmp+1]=1;
            }
        }
    }
}
int main(){
    n=rd();m=rd();num=rd();
    S=rd();T=rd();
    int x,y,w;
    for(int i=1;i<=m;i++){
        x=rd();y=rd();w=rd();
        add(x,y,w);add(y,x,w);
    }
    spfa();
    int ans=1<<30;
    for(int i=0;i<=num;i++)ans=min(ans,dis[T][i]);
    cout<<ans;
    return 0;
}

 

转载于:https://www.cnblogs.com/ghostcai/p/9393439.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值