典型的dijkstra HDU 2680 Choose the best route

本地Qwen + ComfyUI 制作AI漫剧完整保姆级教程(2026年3月最新版) 本文介绍了一个零成本、本地化AI漫剧制作方案,整合Qwen大模型和ComfyUI工作流。Qwen负责剧本创作、分镜设计和提示词生成,ComfyUI处理图像生成、角色一致性保持和动态视频制作。该方案支持8GB显存设备运行(推荐12GB),包含详细安装指南和完整制作流程:从Ollama安装Qwen模型,到ComfyUI配置及必备节点安装,再到分镜生成、角色固定、批量出图和视频合成。文章还提供了常见问题解决方案和优化技巧,全流程1-2小时即可完成3分钟竖屏漫剧制作,适合新手和日更创作者。 阅读详情

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2680

题目大意:一个笨蛋要坐车去朋友家,但坐车呕吐,所以想在最短时间内到达。

测试数据意思:

第一行三个数:n(车站的个数,n<1000)  |  m(代表车站之间所有线路的总个数)  | s(代表离朋友家最近的车站)

下面有m行:   p q t   意思是:一条从p到q的线路,花费t时间

m行之后有个数字:w (代表可以在开始时搭乘的车站)

下面w个数W1,W2....Ww就是车站的编号

解题报告:

从题意看,我们可以反过来看。看成是:从要到达的车站s到可以搭车的车站w...反正不管正着看,还是反着看,就是求点到点的最短路径问题,而且没有负权值(为什么要没有负权值呢,下面讲),明显用dijkstra(混蛋,不懂的话,看下数据结构书p187)。

思路:你想啊笨蛋

如果存在一条从i到j的最短路经(pi,.......pk,pj),那么(p1.......pk)必然是一条从i到k的最短路经,否则的话,(pi.....pk,pj)不可能成为从i到j的最短路径。为了求出最短路径,dijkstra提出了一个按路径长度递增的次序产生最短路径的算法;

什么意思呢? 大致意思就是:对于原顶点V0,首先选择其直接相邻的顶点中最短的顶点Vi,那么可知:由V0经过Vi到与Vi直接相邻的顶点Vj的最短距离dis[j] = min(    map[V0][j] ,    dis[i] + map[i][j]) 这句最重要了,什么意思呢?就是要么直接到,要么转一下再到。(觉得很熟悉,在动态规划或贪心时,见过)

所以:

假设存在G=<V,E>,源顶点为V0,U={V0},dis[i]记录V0到i的最短距离 ,map[i][j]记录i到j的距离

1.从V-U中dis[i]值最小的顶点i,将i加入到U中;

2.更新与i直接相邻顶点的dis值。(dist[j]=min{map[V0][j],dis[i]+map[i][j]})

3.直到U=V,停止。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 2002    //这个地方太坑爸爸了,按照题目上我设成20002居然没执行函数体,直接return 啦
#define N 1002    //这些看题目数据范围
#define INF 999999
int n,m,s;
int map[M][M];    //map[i][j]表示i到j的权值
int dis[N];        //dis[i] 表示原点s到i的距离
int visit[N];      //顶点是否被访问过
void dijkstra(int s)
{
    int i,j,k = 0;
    int min;
    memset(visit,0,sizeof(visit));  //初始时都没被访问过
    for(i = 1; i <=n; i++)
    {
        dis[i] = map[s][i];
    }
    visit[s] = 1;  //第一个顶点即原点,被访问
    dis[s] = 0; //s到s 即为0
    for(i = 1; i < n; i++)
    {
        min = INF;
        //找到最小的
        for (j = 1; j <= n; j++)
        {
            if ( !visit[j] && dis[j] < min)
            {
                min = dis[j];
                k = j;   //最小的顶点
            }
        }
        if (min == INF)
        {
            break;
        }
        visit[k] = 1; //k顶点被访问
        //这里就是比较:直接到还是转一下再到
        //我猜,你个笨蛋肯定会问:不能转多下吗?
        //答曰:从源点一个一个向外扩展,具有最优子结构。每个dis[i]都保留着从s到i的最短距离。转多下的情况把它分解开,就知道了
        for(j = 1; j <= n; j++)   
        {
            if ( !visit[j] && dis[j] > dis[k] + map[k][j])
            {
                dis[j] = dis[k] + map[k][j];
            }
        }
    }
    return ;
}
int main()
{
    int i,j;
    int p,q,t,w;
    int  minx ,ww;
    while ( scanf("%d %d %d",&n,&m,&s) != EOF)
    {
        memset(dis,0,sizeof(dis));
        for (i = 1; i<= n; i++)
            for(j = 1; j <= n; j ++)
            {
                map[i][j] = INF;
            }
        for(i = 1; i <= m; i++)
        {
            scanf("%d%d%d",&p,&q,&t);
            if(t < map[q][p])     //题目上明明说的t <= 1000的,尼玛不加就错。以后保险起见要加啊
                map[q][p] = t;   //注意啊啊啊啊啊啊,因为是把S(目的地)看成源点,所以有向图方向要反过来啊
        }
        dijkstra(s);
        scanf("%d",&w);
        minx = INF;

        for (i = 1; i <=w; i++ )  //找到最小的dis
        {
            scanf("%d",&ww);
            if (minx > dis[ww])
            {
                minx = dis[ww];
            }
        }
        if ( minx != INF)
        {
            printf("%d\n",minx);
        }
        else
        {
            printf("-1\n");
        }
    }
    return 0;
}

然后解释:为什么dijkstra为什么不能有负权值???

比如:相邻顶点i,j这两个顶点之间的边map[i][j] < 0,那么当V0到Vi的最短路径为dis[i]时,那dis[j]怎么算呢?

按我们的dijkstra算法该是dist[j]=min{map[V0][j],dis[i]+map[i][j]}那么明显,当计算dis[i]时,i顶点已经加入了最短路径的集合U中,U中的最短路径及其长度是不会再变更的,因为visit[i] 已经被访问过变为1。。。dis[i] 再加上一个负数是小于dis[i]的,而算dis[i]时有可能该有j再到i的(这里具体解释一下:按自己理解,把扩展i,j之前所有的顶点看成a,若a到i权值为10,a到j权值为20,i到j权值为-100,那么接下来a必定要先到i得到dis[i],这之后dis[i]就不能再更改了,然后再由{a,i}到j,但这时会发现:如果由a到j再到i,那么dis[i]会更小,所以这里就出现了错误。再所以,就不能有负权值啊)。

那如果有负权值,怎么搞呢?

可以用    Bellman-Ford算法。


如何保存路径呢?

倒过来想就好了,比如:从源点a经过很多很多步到达了b,然后经过一步到达了终点c,那么此时我们反着想,倒着走,如果满足

dis[b]+Cost[b][c])==dis[c]这个条件,就说明b必然在路径中。。。。

看代码比较清楚点。。。。

#include <cstdio>
#include <iostream>
#define BIG 5
#include <cstring>
#define MIN(a,b) ((a)<(b)?(a):(b))
#define N 6
#define INF 1000005
using namespace std;

int q[N+1],dis[N+1],vis[N+1],a,b,cnt;
int Cost[N+1][N+1]=
{
    {0,0,0,0,0,0},
    {0,0,20,15,INF,INF,INF},
    {0,2,0,INF,INF,10,30},
    {0,INF,4,0,INF,INF,10},
    {0,INF,INF,INF,0,INF,INF},
    {0,INF,INF,INF,15,0,INF},
    {0,INF,INF,INF,4,10,0}
};
//int sp[10];
int index = 0;
void dijstra(int u)
{
    memset(vis,0,sizeof(vis));
    for (int i=0; i<=N; i++)
        dis[i]=INF;
    dis[u]=0;
    vis[u] =0;
    for (int i=1; i<N; i++)
    {
        int _MIN=INF;
        for (int j=1; j<=N; j++)
            if (!vis[j] && dis[j]<_MIN)
            {
                _MIN=dis[j];
                u=j;
            }
        vis[u]=1;

        for (int j=1; j<=N; j++)
            if (!vis[j] && dis[j]>dis[u]+Cost[u][j])
                dis[j]=dis[u]+Cost[u][j];
    }
}

void Getpath(int u)
{
    q[++cnt]=u;
    if (u==a)
    {
        for (int i=cnt; i>1; i--)
        {
            cout<<q[i]<<"->";
           // sp[index++] = q[i];
        }

        cout<<q[1]<<endl;
        cnt--;
        return ;
    }
    for (int i=1; i<=N; i++)
        if (i!=u  && dis[i] < INF && (dis[i]+Cost[i][u])==dis[u])
        {
            Getpath(i);
        }
    cnt--;
}


int main()
{
    printf("输入起点和终点:\n");
    while (scanf("%d%d",&a,&b)!=EOF)
    {
        //sp[1] = a;
        cnt=0;
        if(a == b)
        {
            printf("0\n");
            continue ;
        }
        dijstra(a);
          if(dis[b] >= INF)
        {
            printf("无路可走~\n");
            continue;
        }
        Getpath(b);
    }

    return 0;
}






【unity实战】完美的2D横版平台跳跃玩家控制器,使用InputSystem+有限状态机实现人物加速减速 多段跳 长短跳 多段攻击 冲锋 冲锋残影 滑墙 蹬墙跳 滑墙 土狼时间 预输入 攀爬 爬楼梯 【unity实战】使用unity的新输入系统InputSystem+有限状态机设计一个玩家状态机控制——实现玩家的待机 移动 闪避 连击 受击 死亡状态切换这次来实现一个2d平台平台跳跃玩家控制器,平台人物控制要做的好,要考虑的问题会有很多,比如移动加速减速 多段跳 冲锋 冲锋残影 滑墙 蹬墙跳 土狼时间 预输入 攀爬 爬楼梯//减速至于为什么叫这个名字(土狼时间)呢?其实这个名词来自于华纳兄弟动画公司,一部古老的动画系列影片《Looney Tunes》 阅读详情

相关推荐

HFSS仿真平行线定向耦合器学习笔记

材料:FR4(玻璃纤维环氧树脂),介电常数:4.4,损耗角正切:0.02,厚度0.8mm。扫频方式:快速扫频,扫频范围:1.0GHz~3.0GHz,步进:0.01GHz。端口2是端口1关于Y轴对称,端口3,端口4是端口1和端口2关于X轴对称得到。求解中心频率:2.0GHz,迭代次数:20,收敛误差为0.02。右键设置边界条件----辐射边界。激励方式:集总端口激励。

qq_36521926的博客 4489

HDU - 2680 Choose the best route(超级源点,反向建边,Dijkstra)

HDU - 2680 Choose the best route Dijkstra算法,有两种方法: 1.是反向建边,把起点当作终点,终点看成起点,然后反向建边。 2.建立一个超级源点,将这个源点与其他起点距离为0,然后走一次Dijkstra算法就好 #include<cstdio> #include<cstring> const int N = 1010, INF=0x3f3f3f3f; int e[N][N],dis[N],vis[N]; int n,m,s; void D

00后的博客 245

第四届“网鼎杯”网络安全大赛 - 青龙组

第四届“网鼎杯”网络安全大赛 - 青龙组

lpppp小公主的博客 1313

HDU2680(最短路变形,小技巧)

最短路变形情景一 dijkstra只能解决单源最短路的问题,多起点要跑多次dijkstra算法或者spfa?不不不,其实还有更好的思路,把这些多起点都连接同一个无关紧要的点s,让这些多起点到s的距离是0,最后在跑dijkstra求s到n的最短路,这样就转化成单源最短路径了 Choose the best route #include <iostream> #include <al...

weixin_43808717的博客 241

CTF密码学奇技淫巧:当Base64遇到ROT13与Atbash

本文深入解析CTF竞赛中Base64、ROT13与Atbash的复合编码技术,提供Python实现与CyberChef可视化处理方案,帮助选手掌握密码学题目的解题技巧。通过NewStarCTF2025实战案例,对比脚本化与可视化工具的优劣,提升Web安全竞赛中的编码处理能力。

weixin_29001683的博客 508

ROCm rocr-libhsakmt分析系列1-2:多GPU跨卡VRAM访问机制分析

本文基于ROCr-Runtime的libhsakmt库源码,深入分析了多GPU系统中跨设备内存访问的实现机制。主要内容包括: 实现流程概述:通过P2P拓扑发现、统一虚拟地址空间、页表映射和硬件转发四个步骤,实现零拷贝的跨GPU内存访问。

图形/计算GPU的驱动与虚拟化技术分享园地 2504

HDU-----2680(最短路径)

题目链接 Choose the best route 代码如下 #include<bits/stdc++.h> using namespace std; const int maxn=10000000; int mp[1000][1000]; int vis[1000],le[1000]; int main(void) { int n,m,i,j,a,b,x,st,ed,w; while(~scanf("%d%d%d",&n,&m,&ed)) { me

m0_53916335的博客 157

CMM软件:PC-DMIS汽车制造二次开发

PC-DMIS 是一种广泛应用于坐标测量机(CMM)的测量软件,它不仅提供了强大的测量功能,还支持用户通过二次开发来扩展其功能。二次开发可以显著提升测量效率,满足特定的测量需求,减少重复性工作,提高数据处理和分析的准确性。本节将介绍 PC-DMIS 二次开发的基本概念、开发环境的搭建以及开发中常用的工具和方法。PC-DMIS 二次开发为用户提供了强大的工具,可以显著提升测量效率、减少重复性工作并提高数据处理和分析的准确性。

kkchenjj的博客 1813

HDU 2680

题意:一个人想去看他的朋友 , 他自己可以从N个位置出发。 思路:这是一个多源单汇的最短路问题。     因为我还不会用FLOYD算法。。    所以只能用麻烦的dij算法了。   把多源单汇问题转化为单源多汇问题。 用dij搜一遍以终点为起点的最短路。 然后从多个起点的最短路中找出一个最短的。 如果没有就输出-1 #include #include #include

u012896700的专栏 590

vue2 - 最新详细实现高德地图绘制动态热力图详细教程,在某区域或城市地图上做“热力图层“展示人流量、旅游人口密度、热量图、全国地区地理热力图,利用颜色的深浅表示密度或强度等场景(详细示例代码教程)

vue2,nuxt2,高德地图,热力图,绘制热力图层,报错,卡顿,出不来怎么办,无法关闭,怎么解决这个问题,出错,城市名称,城市某个街道,城区,省份,市区,县城,乡镇,村,各省份的热力图,交通流量,人口流量,密度,旅游出行,人口数量,颜色介绍,深浅代表,人流量,vue2使用高德地图实现某个区域热力图,vue高德地图api加载热力图及关闭,接收热力图数据并渲染热力图,关掉热力图,Vue使用高德API制作热力图,热力图加载不出来,电子围栏围住热力图,vue2中使用高德地图渲染热力图组件,高德地图使用热力图详细教

✅ 精选推荐文章 4201

智能驾驶域控制器的“终极大考”:解析EOL测试的核心价值与技术实践

在智能驾驶技术高速发展的今天,域控制器(Domain Controller)作为车辆“大脑”的核心部件,承担着传感器数据处理、决策规划、执行控制等关键任务。然而,这个集成了数十个芯片、运行着数百万行代码的复杂系统,如何确保其出厂前的功能安全与性能稳定?答案就藏在被称为“生产线最后一道防线”的EOL(End of Line)测试中。

汽车电子软件领域知识分享 703

hdu 2680最短路dijkstra

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2680 代码:   #include #include #include #include #include #include #include #include using namespace std; #define INF 999999 #define sf scanf

桑榆 500

EtherCAT主站SOEM -- 15 -- CIA402伺服驱动器子协议

以上就是EtherCAT主站SOEM – 15 – CIA402伺服驱动器子协议的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 2733

HDU2680 Choose the best route 【Dijkstra】

Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7061    Accepted Submission(s): 2300 Problem Description One

长风的专栏 944

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

HDU2680:Choose the best route(Dijkstra)

Problem Description One day , Kiki wants to visit one of her friends. As she is liable to carsickness , she wants to arrive at her friend’s home as soon as possible . Now give you a map of the city’s

ACM!荣耀之路! 3293

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

hdoj 2680 Choose the best route(dijkstra 多起点 单终点)

hdoj 2680           http://acm.hdu.edu.cn/showproblem.php?pid=2680 题目大意:一个小孩想要去看望他的朋友,他家附近有好几个出发站,去朋友家需要倒不同的车,题中给了多条车站之间的铁路距离,你需要选择一个出发站,找到去朋友家的最短路径,输出路径长度。     心得:一开始自己的想法就是输入多个起点调用多次dijksta,可是一直超

张小V 603

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

hdu2680 -- Choose the best route

hdu2680 – Choose the best route Problem Description One day , Kiki wants to visit one of her friends. As she is liable to carsickness , she wants to arrive at her friend’s home as soon as possible . Now give you a map of the city’s traffic route, and the s

weixin_45808576的博客 238

Choose the best route(Dijkstra)

Choose the best route(Dijkstra) 原题:hdu2680 这是一道有点难度的最短路径题,要想到以最后终点为起点进行搜索,或者新建一个起点用0表示,题目给的起点与0点连接且距离为零,其他点不与0点相连接,进行搜索。我一开始用Floyd来解,发现后来怎么优化都超时,看来这种单源点题目还是要用Dijkstra来解。 代码如下: #include &lt;iostream&gt...

qq_34851605的博客 307

hdu2680 Choose the best route (Dijkstra)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2680 #include #include #define MAXN 1001 #define INF 0x3f3f3f3f int mp[MAXN][MAXN],n; int dist[MAXN],visited[MAXN]; void Dijkstra(int s) { int

不可不戒 691

HDU2680 Choose the best route【Dijkstra】

Choose the best route 题意: 给定一个n个点、m条边的有向图,你有k个起点可以选择,求到终点s的最短路。 题解: 需要注意的只有: 多个起点,只要建立一个超级起点,连通这些起点即可。 有向图。一开始没看清题意直接按照无向图写wa了一发。 两点之间可能多边。用链式前向星存图直接无视这种坑点。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int inf = ...

lllllan 439

HDU 2680 Choose the best route【多源最短路,Dijkstra+spfa】

题意:输入n,m,s,分别代表车站数(顶点数),路的数量,终点位置,然后有m行数据代表车站之间的距离,再输入一个w,代表可以开始的地方,接下来就是w个点。 思路:还是最短路,但是起点有多个选择,如果每次都从每个起点去搜索,应该会TLE。由于此题的点坐标都是由 1 分开始的,我们可以将起点设为 0 ,再将 0 到每个起点的距离设为0,这样从0到终点的最短路径即为所求。不存在最短路输出 “-1”。 注意:此题有重边,记录最小的就可以了。

AC_Dreameng 1467

杭电2680——Choose the best route(Dijkstra)

Choose the best route(选择最佳路线) 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2680 Problem Description One day , Kiki wants to visit one of her friends. As she is liable to carsickness , she wants to arrive at her friend’s home as soon as possible . Now give

abcdefghikk的博客 469

HDU 2680 Choose the best route

Problem Description One day , Kiki wants to visit one of her friends. As she is liable to carsickness , she wants to arrive at her friend’s home as soon as possible . Now give you a map of the city

水人之路 561

Choose the best route HDU2680

第一遍用dijkstra写完 发现超时 然后 反过来写的话只要一次dijkstra 要点:此题为有向图 反着dijkstra的话要反着存路径 #include<bits/stdc++.h> using namespace std; int m1[1005][1005]; int vis[1005];int dis[1005]; #define ...

weixin_30849591的博客 125

HDU--2680Choose the best route【Dijkstra】

Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7745    Accepted Submission(s): 2572 Problem Description One day

_阿阿阿阿欢 459

hdu 2680 Choose the best route

Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10606    Accepted Submission(s): 3418 Problem Description One d

white lie 509
上一篇: [JAVA]使用Eclipse从下载到编写一个实例全过程
下一篇: prim 与dijkstra的异同 POJ 2485 Highways
i丹明扬
博客等级 码龄15年 331粉丝 115原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值