首页 > 其他分享 >L2-001 紧急救援

L2-001 紧急救援

时间:2024-04-18 14:57:16浏览次数:29  
标签:pre 救援 val people int top 001 L2 505

原题链接

题解

确定起点和终点,求救援人数最长,路径最短的路径,只需要集群算法中优先队列中重载比较符修改一下就就行,由于数据量很小,所以输出路径的时候搜索就行(最优解唯一)

code

#include<bits/stdc++.h>
using namespace std;

struct node
{
    int to,val;
};
vector<node> G[505];

int people[505]={0};
int help[505]={0};
int dis[505];
int path[505]={0};
int vis[505]={0};
stack<int> st;
int flag=0;
int n,m,s,d;

struct fresh
{
    int to,pre,val;
    bool operator<(const fresh &b)const
    {
        if(val!=b.val)return val>b.val;//dis
        else return help[pre]+people[to]<help[b.pre]+people[b.to];//help
    }
};
void ss(int walk,int cure,int now)
{
    if(walk==0&&cure==0)
    {
        if(now!=d) return;
        flag=1;
        st.push(now);
        return ;
    }
    if(walk<=0||cure<=0||now==d) return;

    for(auto next:G[now])
    {
        int to=next.to,val=next.val;
        if(!vis[to])
        {
            vis[to]=1;
            ss(walk-val,cure-people[to],to);
            vis[to]=0;
        }

        if(flag)
        {
            st.push(now);
            return ;
        }
    }
}

int main()
{
    memset(dis,0x3f,sizeof dis);

    cin>>n>>m>>s>>d;

    for(int i=0;i<n;i++) cin>>people[i];

    for(int i=1;i<=m;i++)
    {
        int x,y,c;
        cin>>x>>y>>c;
        G[x].push_back({y,c});
        G[y].push_back({x,c});
    }

    priority_queue<fresh> q;
    q.push({s,s,0});
    path[s]=1;
    while(q.size())
    {
        int now=q.top().to,pre=q.top().pre,val=q.top().val;
        q.pop();
        if(dis[now]<val) continue;
        else if(dis[now]==val)
        {
            path[now]+=path[pre];
            continue;
        }
        dis[now]=val;
        path[now]=path[pre];
        help[now]=help[pre]+people[now];
        for(auto next:G[now]) q.push({next.to,now,next.val+dis[now]});
    }
    cout<<path[d]<<" "<<help[d]<<endl;

    ss(dis[d],help[d]-people[s],s);
    while(st.size())
    {
        cout<<st.top();
        st.pop();
        if(st.size()) cout<<" ";
    }
    return 0;
}

标签:pre,救援,val,people,int,top,001,L2,505
From: https://www.cnblogs.com/pure4knowledge/p/18143490

相关文章

  • 天梯赛真题补题单(L2-1 ~ L2-4)
    L2-1点赞狂魔#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<LL,LL>PII;constLLN=200200,M=2020,INF=0x3f3f3f3f;LLn;structnode{strings;LLsum;}a[N];boolcmp(nodel,noder){if(l.sum!=r.sum)......
  • V4L2 - Pipeline_Define & Async_Register & Pipeline_Create
       异步注册存在的根本原因就是:    注册时一定要表明subdev之间的层级关系,所以存在两个注册方向    一是以当前节点寻找下一级节点,如果下一级具备注册条件,则注册下一级节点,并指明层级关系    二是一失败后,寻找上一级节点,如果上一级指明层级关系方法被......
  • html2canvas截取专题图(包含地图)
    html2canvas截取专题图(包含地图)问题:html2canvas截取地图时地图空白,报错:UnabletocloneWebGLcontextasithaspreserveDrawingBuffer=false一、情况介绍:​ 使用如下代码进行截图时,出现地图空白情况,报错:UnabletocloneWebGLcontextasithaspreserveDrawingBuffer=f......
  • void swap(double& val1,double& val2); 这是什么意思
    voidswap(double&val1,double&val2);这是什么意思?定义了一个叫做swap的函数,它接受两个双精度数的引用作为参数在C++中,&符号用于表示引用。通过传递引用作为参数,函数可以直接修改传递给它的参数的值,而不是创建参数的副本。通过传递引用而不是传递参数的副本,可以避免不必......
  • nginx报错:bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a soc
    问题:1.nginx启动失败2.在logs/error.log文件下,出现报错信息:bind()to0.0.0.0:80failed(10013:Anattemptwasmadetoaccessasocketinawayforbiddenbyitsaccesspermissions) 目录:1、cmd输入命令netstat-aon|findstr"80"2.、查看80端口7532对应的任务3、......
  • 初中中考英语词汇大全001掌握常用词汇,轻松应对考试
    初中中考英语词汇大全001掌握常用词汇,轻松应对考试PDF格式公众号回复关键字:ZKCH0011advertisements广告2Accordingtotheadvertisements根据广告3EXCEPT除了,在选项中经常出现,要注意不要意思理解反了4Thetextaboveiswrittento上述文本是写给,这种题是根据......
  • [深度学习]L2正则化和权重衰退(Weight Decay)
    L2正则化和权重衰退(WeightDecay)一、权重衰退介绍1.什么是权重衰减/权重衰退——weight_decayL2正则化主要作用是:解决过拟合,在损失函数中加入L2正则化项2.L2范数L2范数,也被称作欧几里得范数或者Frobenius范数(当应用于矩阵时),是最常用的向量范数之一,用于衡量向量元......
  • 在 Windows10 中使用 WSL2
    安装必备的功能使用win+i打开设置,依次点击应用→应用与功能→程序和功能→启用或关闭Windows功能勾选适用于Linux的Windows子系统与虚拟机平台确定并且重启配置组合键win+r输入powershell打开PowerShell窗口执行下面的命令设置为wsl2wsl--set-def......
  • NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
    NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解[Text2SQL]NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(SpidervsBIRD)全面对比优劣分析[Text2SQL、Text2DSL]NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法技术回顾七年发展脉络梳理NL2SQL......
  • IDEPG001编程课程
    DEPG001编程课程课业2023-2024课程课业每个元件的标记都在所附的标记中清楚地标明计划此课业占该科目总分的70%。编程编程V12324NCUK有限公司2023第2页,共8页简报作为气候变化项目的一部分,东北部达勒姆市附近的一个自然保护区英格兰需要一个记录和分析降雨数据的程序。收集数据并......