hdu1688 最短路加比最短路多1的条数

本文介绍了一个与HDU3191非常相似的算法题目,并给出了详细的实现代码。通过加入特定的判断条件,实现了对最短路径算法的有效调整。文中还提供了完整的C++实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本题和hdu3191是非常相似的,我们只需加一个判断条件dis[e][0]+1==dis[e][1]即可。要记得点的下标。

可以看看hdu3191http://www.cnblogs.com/BruceNoOne/p/3248474.html

#include <iostream>
using namespace std;
const int N=1009;
const int inf=1<<30;
int dis[N][2],step[N][2],head[N],vis[N][2];
struct node
{
    int v,w,next;
}map[N*N];
int n,s,e,tot;
void add(int a,int b,int w)
{
    map[tot].v=b;
    map[tot].w=w;
    map[tot].next=head[a];
    head[a]=tot++;
}
void dij()
{    
    int i,flag;
    dis[s][0]=0;
    step[s][0]=1;
    while(1)
    {
        int min=inf;
        int u;    
        for(i=1;i<=n;i++)
        {
            if(!vis[i][0]&&dis[i][0]<min)
            {    
                u=i;
                min=dis[i][0];
                flag=0;
            }else
                if(!vis[i][1]&&dis[i][1]<min)
                {
                    min=dis[i][1];
                    u=i;
                    flag=1;
                }
        }
        if(u==e&&flag==1)break;
        if(min==inf)break;
        vis[u][flag]=1;
        for(i=head[u];i+1;i=map[i].next)
        {
            int v=map[i].v;
            int w=dis[u][flag]+map[i].w;
            if(dis[v][0]>w)
            {
                if(dis[v][0]!=inf)
                {
                    dis[v][1]=dis[v][0];
                    step[v][1]=step[v][0];
                }
                dis[v][0]=w;
                step[v][0]=step[u][flag];
            }else if(dis[v][0]==w)
            {
                step[v][0]+=step[u][flag];
            }else if(dis[v][1]>w)
            {
                dis[v][1]=w;
                step[v][1]=step[u][flag];
            }else if(dis[v][1]==w)
            {
                step[v][1]+=step[u][flag];
            }
        }
    }
    
}
void init()
{
    for(int i=0;i<=n;i++)
    {
        head[i]=-1;
        dis[i][1]=dis[i][0]=inf;
        step[i][1]=step[i][0]=0;
        vis[i][1]=vis[i][0]=0;
    }
    tot=0; 
}
int main()
{
    int m,a,b,i,w,t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&m);
        init();
        for( i=0;i<m;i++)
        {
            scanf("%d%d%d",&a,&b,&w);
            add(a,b,w);
        }
        scanf("%d%d",&s,&e);
        dij();
        if(dis[e][1]==dis[e][0]+1)
            printf("%d\n",step[e][0]+step[e][1]);
        else
            printf("%d\n",step[e][0]);
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/BruceNoOne/p/3248509.html

内容概要:《中文大模型基准测评2025年上半年报告》由SuperCLUE团队发布,详细评估了2025年上半年中文大模型的发展状况。报告涵盖了大模型的关键进展、国内外大模型全景图及差距、专项测评基准介绍等。通过SuperCLUE基准,对45个国内外代表性大模型进行了六大任务(数学推理、科学推理、代码生成、智能体Agent、精确指令遵循、幻觉控制)的综合测评。结果显示,海外模型如o3、o4-mini(high)在推理任务上表现突出,而国内模型如Doubao-Seed-1.6-thinking-250715在智能体Agent和幻觉控制任务上表现出色。此外,报告还分析了模型性价比、效能区间分布,并对代表性模型如Doubao-Seed-1.6-thinking-250715、DeepSeek-R1-0528、GLM-4.5等进行了详细介绍。整体来看,国内大模型在特定任务上已接近国际顶尖水平,但在综合推理能力上仍有提升空间。 适用人群:对大模型技术感兴趣的科研人员、工程师、产品经理及投资者。 使用场景及目标:①了解2025年上半年中文大模型的发展现状与趋势;②评估国内外大模型在不同任务上的表现差异;③为技术选型和性能优化提供参考依据。 其他说明:报告提供了详细的测评方法、评分标准及结果分析,确保评估的科学性和公正性。此外,SuperCLUE团队还发布了个专项测评基准,涵盖模态、文本、推理等个领域,为业界提供全面的测评服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值