hdu 2066 一个人的旅行

本文介绍了一种解决多个起点和终点最短路径问题的方法。通过引入超级起点和超级终点简化了算法复杂度,只需计算一次从超级起点到超级终点的最短路径。
原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=2066
思路:这道题目就是最短路径问题上变化一下,根据题意,出发点不止一个,目的地也不止一个,求的是从某一个出发点到某一个目的点,最近的距离,

注意,只要求其中一个即可(题目描述是到某一个喜欢的城市的最短时间)。最直观的想法就是任意两个都求,最后比较,很耗时间,会超时,

因此就是加入超级起点(用0表示)以及超级终点k(用最大城市数字+1表示),这样,只需要求一次(0,k)最短路径即可,具体看代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int Max=0x3f3f3f;
const int N=1005;
int maps[N][N];
int dis[N];
bool vis[N];
void init()
{
    for(int i=0;i<N;i++)
        for(int j=0;j<N;j++)
            maps[i][j]=(i==j?0:Max);
}
void Dijkstra(int st,int ed)
{
    int i,j;
    memset(vis,0,sizeof(vis));
    for(i=0;i<=ed;i++)
    {
        dis[i]=(i==st?0:Max);
    }
    dis[st]=0;
    int temp,k;
    for(i=0;i<=ed;i++){
       temp=Max;
       for(j=0;j<=ed;j++)
        if(!vis[j] && dis[j]<temp)
        temp=dis[k=j];
        vis[k]=1;
//       if(k==ed || temp==Max) return;
       for(j=0;j<=ed;j++)
       {
           if(!vis[j]&&dis[j]>dis[k]+maps[k][j])
            dis[j]=maps[k][j]+dis[k];
       }
    }
    return;
}
int main()
{
    int m,n,i,j,k;
    int s,d;
    while(~scanf("%d%d%d",&n,&s,&d)){
        init();
    int x,y,w;
    k=0;
     for(i=0;i<n;i++)
     {
         scanf("%d%d%d",&x,&y,&w);
         maps[x][y]=maps[y][x]=min(w,maps[x][y]);
         k=max(x,max(k,y));
     }
     k++;//加入两个超级汇点,0和k(最大值加1)
     for(i=0;i<s;i++)
     {
         scanf("%d",&j);
         maps[0][j]=0;
         maps[j][0]=0;
     }
     for(i=0;i<d;i++)
     {
         scanf("%d",&j);
         maps[j][k]=0;
         maps[k][j]=0;
     }
     Dijkstra(0,k);
     printf("%d\n",dis[k]);
    }
    return 0;
}


基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)内容概要:本文档围绕基于遗传算法的异构分布式系统任务调度算法展开研究,重点介绍了一种结合遗传算法的新颖优化方法,并通过Matlab代码实现验证其在复杂调度问题中的有效性。文中还涵盖了多种智能优化算法在生产调度、经济调度、车间调度、无机路径规划、微电网优化等领域的应用案例,展示了从理论建模到仿真实现的完整流程。此外,文档系统梳理了智能优化、机器学习、路径规划、电力系统管理等多个科研方向的技术体系与实际应用场景,强调“借力”工具与创新思维在科研中的重要性。; 适合群:具备一定Matlab编程基础,从事智能优化、自动化、电力系统、控制工程等相关领域研究的研究生及科研员,尤其适合正在开展调度优化、路径规划或算法改进类课题的研究者; 使用场景及目标:①学习遗传算法及其他智能优化算法(如粒子群、蜣螂优化、NSGA等)在任务调度中的设计与实现;②掌握Matlab/Simulink在科研仿真中的综合应用;③获取多领域(如微电网、无机、车间调度)的算法复现与创新思路; 阅读建议:建议按目录顺序系统浏览,重点关注算法原理与代码实现的对应关系,结合提供的网盘资源下载完整代码进行调试与复现,同时注重从已有案例中提炼可迁移的科研方法与创新路径。
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)内容概要:本文提出了一种基于非支配排序的蜣螂优化算法(NSDBO),用于求解微电网多目标优化调度问题。该方法结合非支配排序机制,提升了传统蜣螂优化算法在处理多目标问题时的收敛性和分布性,有效解决了微电网调度中经济成本、碳排放、能源利用率等多个相互冲突目标的优化难题。研究构建了包含风、光、储能等多种分布式能源的微电网模型,并通过Matlab代码实现算法仿真,验证了NSDBO在寻找帕累托最优解集方面的优越性能,相较于其他多目标优化算法表现出更强的搜索能力和稳定性。; 适合群:具备一定电力系统或优化算法基础,从事新能源、微电网、智能优化等相关领域研究的研究生、科研员及工程技术员。; 使用场景及目标:①应用于微电网能量管理系统的多目标优化调度设计;②作为新型智能优化算法的研究与改进基础,用于解决复杂的多目标工程优化问题;③帮助理解非支配排序机制在进化算法中的集成方法及其在实际系统中的仿真实现。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注非支配排序、拥挤度计算和蜣螂行为模拟的结合方式,并可通过替换目标函数或系统参数进行扩展实验,以掌握算法的适应性与调参技巧。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值