最短路模板 POJ-2387 Til the Cows Come Home

Android Camera性能优化概述 做camera性能优化方面的工作有几年了,想写一篇文章简单介绍一下其中涉及到的具体技术,这篇文章会大概介绍一下涉及到的技术。 阅读详情

题意就是求最短路,重点是模板
bellmanFord

//时间复杂度 O(V*E)
#include <cstdio>
#include <algorithm>
#include <queue>
#include <cstring>
using namespace std;
const int MAXN=2222;
const int MAXM=2333;
const int INF=0x3f3f3f3f;
int head[MAXN],to[MAXM<<1],ne[MAXM<<1],wt[MAXM<<1],n,m,dist[MAXN],ecnt;
void init()
{
    ecnt=0;
    memset(head,0,sizeof(head));
}
void addedge(int a,int b,int c)
{
    ne[++ecnt]=head[a];
    head[a]=ecnt;
    to[ecnt]=b;
    wt[ecnt]=c;
}
int bellmanFord(int s,int t)//s为源点,t为终点
{
    for(int i=1;i<=n;i++)
        dist[i]=INF;
    dist[s]=0;
    bool flag;
    for(int i=1;i<=n;i++)
    {
        flag=0;
        for(int j=1;j<=n;j++)
            for(int k=head[j];k;k=ne[k])
            {
                int v=to[k];
                if(dist[v]>dist[j]+wt[k])
                {
                    dist[v]=dist[j]+wt[k];
                    flag=1;
                }
            }
        if(!flag)
            break;
        if(flag&&i==n)//负权回路
            return -1;
    }
    return dist[t];
}
int main()
{
    scanf("%d%d",&m,&n);
    int ta,tb,tc;
    for(int i=0;i<m;i++)
    {
        scanf("%d%d%d",&ta,&tb,&tc);
        addedge(ta,tb,tc);
        addedge(tb,ta,tc);
    }
    printf("%d\n",bellmanFord(1,n));
    return 0;
}

dijkstra

//时间复杂度 O(E+V^2)
#include <cstdio>
#include <algorithm>
#include <queue>
#include <cstring>
using namespace std;
const int MAXN=2222;
const int MAXM=2333;
const int INF=0x3f3f3f3f;
int head[MAXN],to[MAXM<<1],ne[MAXM<<1],wt[MAXM<<1],n,m,dist[MAXN],ecnt;
void init()
{
    ecnt=0;
    memset(head,0,sizeof(head));
}
void addedge(int a,int b,int c)
{
    ne[++ecnt]=head[a];
    head[a]=ecnt;
    to[ecnt]=b;
    wt[ecnt]=c;
}
int vis[MAXN];
int dijkstra(int s,int t)//s为源点,t为终点
{
    for(int i=1;i<=n;i++)
        dist[i]=INF,vis[i]=0;
    dist[s]=0;
    for(int i=1;i<n;i++)
    {
        int milb=0;
        for(int j=1;j<=n;j++)
                if(!vis[j]&&(!milb||dist[j]<dist[milb]))
                    milb=j;
        vis[milb]=1;
        for(int j=head[milb];j;j=ne[j])
            {
                int v=to[j];
                dist[v]=min(dist[v],dist[milb]+wt[j]);
            }
    }
    return dist[t];
}
int main()
{
    scanf("%d%d",&m,&n);
    int ta,tb,tc;
    for(int i=0;i<m;i++)
    {
        scanf("%d%d%d",&ta,&tb,&tc);
        addedge(ta,tb,tc);
        addedge(tb,ta,tc);
    }
    printf("%d\n",dijkstra(1,n));
    return 0;
}

dijkstra(堆优化)

//时间复杂度 O(E+VlogV)
#include <cstdio>
#include <algorithm>
#include <queue>
#include <cstring>
using namespace std;
typedef pair<int,int> PII;
const int MAXN=2222;
const int MAXM=2333;
const int INF=0x3f3f3f3f;
int head[MAXN],to[MAXM<<1],ne[MAXM<<1],wt[MAXM<<1],n,m,dist[MAXN],ecnt;
void init()
{
    ecnt=0;
    memset(head,0,sizeof(head));
}
void addedge(int a,int b,int c)
{
    ne[++ecnt]=head[a];
    head[a]=ecnt;
    to[ecnt]=b;
    wt[ecnt]=c;
}
int vis[MAXN];
priority_queue<PII> pq;
int dijkstra(int s,int t)//s为源点,t为终点,路径权值非负
{
    for(int i=1;i<=n;i++)
        dist[i]=INF,vis[i]=0;
    dist[s]=0;
    pq.push(PII(0,s));
    while(!pq.empty())
    {
        int milb=pq.top().second;
        pq.pop();
        if(vis[milb])
            continue;
        vis[milb]=1;
        for(int j=head[milb];j;j=ne[j])
        {
            int v=to[j];
            if(!vis[v]&&dist[v]>dist[milb]+wt[j])
            {
                dist[v]=dist[milb]+wt[j];
                pq.push(PII(-dist[v],v));
            }
        }
    }
    return dist[t];
}
int main()
{
    scanf("%d%d",&m,&n);
    int ta,tb,tc;
    for(int i=0;i<m;i++)
    {
        scanf("%d%d%d",&ta,&tb,&tc);
        addedge(ta,tb,tc);
        addedge(tb,ta,tc);
    }
    printf("%d\n",dijkstra(1,n));
    return 0;
}

spfa(队列)

//时间复杂度 O(k*E)
#include <cstdio>
#include <algorithm>
#include <queue>
#include <cstring>
using namespace std;
const int MAXN=2222;
const int MAXM=2333;
const int INF=0x3f3f3f3f;
int head[MAXN],to[MAXM<<1],ne[MAXM<<1],wt[MAXM<<1],n,m,dist[MAXN],ecnt;
void init()
{
    ecnt=0;
    memset(head,0,sizeof(head));
}
void addedge(int a,int b,int c)
{
    ne[++ecnt]=head[a];
    head[a]=ecnt;
    to[ecnt]=b;
    wt[ecnt]=c;
}
queue<int> q;
int vis[MAXN],inq[MAXN];
int spfa(int s,int t)//s为源点,t为终点
{
    while(!q.empty())
        q.pop();
    for(int i=1;i<=n;i++)
        dist[i]=INF,vis[i]=0,inq[i]=0;
    dist[s]=0;
    q.push(s);
    inq[s]=1;
    while(!q.empty())
    {
        int fr=q.front();
        q.pop();
        inq[fr]=0;
        for(int k=head[fr];k;k=ne[k])
        {
            int v=to[k];
            if(dist[v]>dist[fr]+wt[k])
            {
                dist[v]=dist[fr]+wt[k];
                if(inq[v])
                    continue;
                if(++vis[v]>=n)//有负环
                    return -1;
                q.push(v);
                inq[v]=1;
            }
        }
    }
    return dist[t];
}
int main()
{
    scanf("%d%d",&m,&n);
    int ta,tb,tc;
    for(int i=0;i<m;i++)
    {
        scanf("%d%d%d",&ta,&tb,&tc);
        addedge(ta,tb,tc);
        addedge(tb,ta,tc);
    }
    printf("%d\n",spfa(1,n));
    return 0;
}

spfa(栈实现)

//时间复杂度 O(k*E)
#include <cstdio>
#include <algorithm>
#include <stack>
#include <cstring>
using namespace std;
const int MAXN=2222;
const int MAXM=2333;
const int INF=0x3f3f3f3f;
int head[MAXN],to[MAXM<<1],ne[MAXM<<1],wt[MAXM<<1],n,m,dist[MAXN],ecnt;
void init()
{
    ecnt=0;
    memset(head,0,sizeof(head));
}
void addedge(int a,int b,int c)
{
    ne[++ecnt]=head[a];
    head[a]=ecnt;
    to[ecnt]=b;
    wt[ecnt]=c;
}
stack<int> st;
int vis[MAXN],inq[MAXN];
int spfa(int s,int t)//s为源点,t为终点
{
    while(!st.empty())
        st.pop();
    for(int i=1;i<=n;i++)
        dist[i]=INF,vis[i]=0,inq[i]=0;
    dist[s]=0;
    st.push(s);
    inq[s]=1;
    while(!st.empty())
    {
        int fr=st.top();
        st.pop();
        inq[fr]=0;
        for(int k=head[fr];k;k=ne[k])
        {
            int v=to[k];
            if(dist[v]>dist[fr]+wt[k])
            {
                dist[v]=dist[fr]+wt[k];
                if(inq[v])
                    continue;
                if(++vis[v]>=n)//有负环
                    return -1;
                st.push(v);
                inq[v]=1;
            }
        }
    }
    return dist[t];
}
int main()
{
    scanf("%d%d",&m,&n);
    int ta,tb,tc;
    for(int i=0;i<m;i++)
    {
        scanf("%d%d%d",&ta,&tb,&tc);
        addedge(ta,tb,tc);
        addedge(tb,ta,tc);
    }
    printf("%d\n",spfa(1,n));
    return 0;
}
手把手教你学Simulink--基于故障诊断与容错控制的场景实例:电动汽车电机驱动系统的故障检测与隔离 本文介绍了基于Simulink的电动汽车电机驱动系统故障诊断与隔离(FDI)仿真建模方法。通过构建永磁同步电机(PMSM)驱动系统模型,实现了IGBT开路、电流传感器漂移等典型故障的注入与检测。重点阐述了基于观测器的残差生成方法,以及利用Stateflow实现的故障隔离逻辑。仿真结果表明,该系统能在85ms内准确识别故障类型,隔离准确率达97%,并支持容错控制。文章还探讨了AI故障预测、数字孪生等高级应用方向,为电动汽车电驱系统安全提供了完整的仿真解决方案。 阅读详情

相关推荐

【数学建模】 进化计算与群体智能

遗传算法(GA)是一种用于优化和搜索问题的启发式算法。它模拟了自然选择的过程,其中个体通过遗传和变异进行繁殖,逐渐进化出更优的解。基本步骤初始化:生成初始种群。适应度评估:评估种群中每个个体的适应度。选择:根据适应度选择个体进行繁殖。交叉:选定个体对进行基因交换,生成新的后代。变异:对一些个体进行基因变异,以增加多样性。迭代:重复评估和繁殖过程,直至达到停止条件。粒子群优化算法(PSO)是一种基于群体智能的优化算法,由Kennedy和Eberhart于1995年提出。其灵感来源于鸟群觅食的行为。

weixin_42914989的博客 1113

POJ_1502_最短路模板

POJ 1502 题意:求最短路中的 最大值 ,模板题 dij #include <iostream> #include <string.h> #include <queue> using namespace std; const int maxn = 105; const int MAX = 0x3f3f3f3f; int n; int e[max...

_llc的博客 275

RU.EXE实用指南:从基础操作到高级调试技巧

本文是RU.EXE(RW Everything)的实用指南,详细介绍了这款硬件调试工具从基础操作到高级技巧的全过程。文章阐述了RU.EXE作为直接读写硬件寄存器、内存和PCI配置空间的强大工具,如何帮助硬件工程师和开发人员高效进行底层系统调试与故障排查,并强调了安全操作的重要性。

weixin_29228203的博客 278

poj1258 prime最短路模板

#include #include #include const int N=500; using namespace std; int map[N][N],a[120],n,k,i,j,z,vis[120];; //矩阵 int main(){ while(cin>>n){ int sum=0; memset(a,0,sizeof(a)); memset(map,0,sizeof

thoughtspark的博客 374

从零到一:银河麒麟OS下C#跨平台开发的避坑指南

本文详细介绍了在银河麒麟OS下进行C#跨平台开发的完整流程,从开发环境搭建到避坑指南。针对国产操作系统特性,提供了.NET Core安装、开发工具链配置、桌面应用开发及部署优化的实战经验,特别关注ARM架构适配和性能调优,帮助开发者高效应对国产化开发挑战。

weixin_29221753的博客 863

谈谈人大金仓数据库

人大金仓数据库(Kingbase)是国产自主研发的关系型数据库管理系统,兼容主流数据库语法,支持高并发、高安全性及国产化适配。该数据库提供完整的安装部署方案,包括环境准备、初始化配置和验证流程,并配备专业的数据迁移工具(KDMS)实现从Oracle/MySQL等数据库的平滑迁移。系统提供KStudio等图形化管理工具,支持性能监控、备份恢复等运维功能,同时具备性能调优、高可用架构、分区表管理等高级特性,满足政府、金融等领域的企业级需求。

蜚鸣的博客 2097

POJ - 2387 Til the Cows Come Home(最短路)(Dijkstra模板题)

POJ - 2387 Til the Cows Come Home(Dijkstra模板题)(无向图) Problem Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morni...

四季不败的博客 304

autoDL算力云装Xinference[坑与步骤]

在页面直接点击下载会出现下着下载进度条消失,试了几次才出现这个报错,现在我们就继续安装缺少的包吧。这一步成功绕开了系统盘空间限制。先租用一个合适的服务器,建议不要选最新版本,跟我选的一样即可,不然后面会出现。最近在 AutoDL 上尝试部署。🚫 不要直接使用以下命令。点击下面链接即可打开。

ngadminq的博客 2383

POJ 2387 Til the Cows Come Home(最短路模板)

Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 94991 Accepted: 30871 Description Bessie is out in the field and wants to get back to the barn to get as much sleep ...

QAQ 182

探秘RK3588:OverlayFS挂载与固件升级全攻略

本文围绕RK3588芯片的OverlayFS文件系统挂载与固件升级技术展开详细阐述。首先介绍了RK3588芯片的卓越性能及其在嵌入式领域的广泛应用,重点分析了OverlayFS文件系统的分层架构原理及其在RK3588设备上的挂载方法,包括详细的挂载步骤、常见问题解决方案。随后详细阐述了RK3588设备在Windows和Linux环境下的固件升级方案,涵盖升级准备、具体操作流程及故障处理等内容。最后通过智能安防监控设备的实际案例,展示了OverlayFS挂载与固件升级技术的应用效果。文章为嵌入式开发者提供了全

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 286

从数据到行为的可控暴露:SAP RAP 中的 BO Projection 与 BO Interface 全面实践指南

本文系统梳理了ABAP RAP中BO Projection与BO Interface的定位与实现方式。BO Projection面向业务服务(如UI/API),通过CDS投影视图(as projection on)和行为定义裁剪字段与操作,实现差异化暴露;BO Interface则为EML代码和跨组件复用提供稳定访问层,使用transactional_interface标识。两者均遵循C_/I_命名规范,通过分层设计实现封装性、安全性和灵活性。文中结合真实案例展示了如何通过不同投影满足多角色需求,并详细说明

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 249

POJ - 2387 Til the Cows Come Home 最短路模板(邻接表+优先队列的dijkstra)

GDUT 2020寒假训练 图论 L 原题链接 POJ - 2387 Til the Cows Come Home L - Til the Cows Come Home 题目 Description Bessie is out in the field and wants to get back to the barn to get as much sleep as possible befo...

xcy2001的博客 273

基于VisionMaster实现数据实时存储至MySQL (二)

摘要:之前的分享主要聚焦于简单的一维数据实时存储。但在做缺陷检测项目时,情况往往更加复杂:一张检测图像中可能同时存在多个缺陷,每个缺陷都有一组独立的核心参数(如质心、长短轴、面积等)。如何在 MySQL 中记录这些成组出现的缺陷数据,而不只是简单的单条记录?

haier123888的博客 226

POJ - 2387 Til the Cows Come Home(最短路模板题)

Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morning milking. Bessie needs her beauty sleep, so she wants to get b...

王蒟蒻 200

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

POJ 2387 Til the Cows Come Home (最短路模板SPFA)

题意: 顶点数 N (1<=N<=1000)(1<= N <= 1000)(1<=N<=1000),边数 M (1<=M<=2000)(1 <= M <= 2000)(1<=M<=2000),问从固定点 N 走到 固定点 1 的最短路径。 思路: 题意很明显求最短路,这里数据范围也不大,我选用了 SPFA算法,复杂度 O(...

YunTunLu的博客 210

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

POJ2387 Til the Cows Come Home【最短路径+Dijkstra算法】

Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 110837 Accepted: 35583 Description Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the mornin

海岛Blog 1128

假人有限元模型

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

POJ2387---Til the Cows Come Home (最短路模板)

题目来源:https://vjudge.net/problem/POJ-2387 【题意】 从点n到点1需要的最短路径。 单源最短路径问题。 【思路】 用已知的边去更新未知的边,不断进行松弛操作,直到不能再松弛。 那什么是松弛操作呢? 假设一题为单源路径问题,那么假设点1为起点,且用d数组来存下点1与其他点的的直接距离,然后依次更新,用w[][]二维数组表示点与点之间的关系。例如:d[

Crazy 806

POJ 2387 Til the Cows Come Home【最短路】【模板题】

POJ 2387 Til the Cows Come Home 贝西在牧场,他想回谷仓,在John叫他早上挤奶之前,尽多的睡美容觉。贝西想尽快回去。 John的牧场有N个地标,地标1是谷仓(终点),地标N是贝西所在的苹果树林(起点)。牛通过牧场里T条双向的牛道。 贝西对自己的航行能力不自信,所以一旦开始,她总是在牛道行走。 根据地标之间的小径,确定贝西最少走多远才...

不甘 237

POJ2387 Til the Cows Come Home(最短路模板题)

Til the Cows Come Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30659   Accepted: 10367 Description Bessie is out in the field and wants to get back t

叶孤心的专栏 712

poj 2387 Til the Cows Come Home (最短路迪杰斯特拉模板)

Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morning milking. Bessie needs her beauty sleep, so she wants to get b...

饮酒在风里的博客 220

POJ 2387 Til the Cows Come Home(最短路模板)**

A - Til the Cows Come HomePOJ - 2387 Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morning milking. Bessie needs he...

STOP 201

POJ2387 Til the Cows Come Home——最短路Dijstra模板题目

题目链接 AC代码 #include<iostream> #include<cstring> using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f; int t,n; const int N = 1010; int g[N][N]; int dist[N];//点i到集合s的最短距离 int st[N];//判断点i是否在集合s里面 int Dijstra() { memset(dist,

qq_45769627的博客 133

POJ 2387 Til the Cows Come Home --最短路模板题

Dijkstra模板题,也可以用Floyd算法。 关于Dijkstra算法有两种写法,只有一点细节不同,思想是一样的。   写法1: #include #include #include #include #include #define Mod 1000000007 using namespace std; #define N 1007 int mp

whatbeg 600

POJ - 2387 Til the Cows Come Home(最短路Dijkstra模板题)

题意:给出 m 条无向边, n 个点,求编号为 n 的点到编号为 1 的点的长度。 数据巨小,每条边的长度 1~100.定点数 2~1000,边数小于2000. 思路:模板题。Dijkstra , Bellman,SPFA 都可以,此题有重边。

晚风中的自由 660

【最短路各种方法求解一题(模板题)】POJ 2387 Til the Cows Come Home

Problem Description 输入T,N分别代表有T条通道,和N个地点。接下来T行u,v,w分别表示u地点于v地点之间通道消费,有重复边 Sample Input 5 5 1 2 20 2 3 30 3 4 20 4 5 20 1 5 100 Sample Output 90 代码:dijkstra,就不带注

ACMer 梁剑锋 的博客 374

POJ 2387 Til the Cows Come Home【dijkstra模板题】

POJ 2387 Til the Cows Come Home 题目大意: 无向图中,从点n到点1的最短路径 具体思路: dijkstra,考虑重边 注意下标减1,建议下次还是不使用0号,便于理解 具体代码: #include<iostream> #include<cstdio> #include<stdlib.h> #include<string>...

指弹键盘哼民谣 893
上一篇: POJ-2502 Subway(最短路)
下一篇: HDU-6057 Kanade's convolution(多项式FWT)
lanvent
博客等级 码龄11年 1粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值