首页 > 其他分享 >P9650 [SNCPC2019] Escape Plan

P9650 [SNCPC2019] Escape Plan

时间:2024-05-27 23:46:39浏览次数:30  
标签:P9650 val int ll cin fa Plan SNCPC2019 top

原题链接

第一份代码

#include<bits/stdc++.h>
#define ll long long
const ll maxs=2e18;
using namespace std;

ll e[1000005];
ll d[1000005];

struct node
{
    ll to,len;
    bool operator <(const node &b)const
    {
        return b.len>len;
    }
};

vector<node> G[1000006];

ll dis[1000006]={0};

struct fresh
{
    int pos,val,fa;
    bool operator<(const fresh &b) const
    {
        return val>b.val;
    }
};
int main()
{
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
        int n,m,k;
        cin>>n>>m>>k;
        for(int i=1;i<=k;i++) cin>>e[i];

        for(int i=1;i<=n;i++) cin>>d[i];

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

        for(int i=1;i<=n;i++)
        {
            sort(G[i].begin(),G[i].end());
            dis[i]=maxs;
        }
        priority_queue<fresh> q;
        q.push({1,0,0});

        while(q.size())
        {
            int now=q.top().pos,val=q.top().val,fa=q.top().fa;
            q.pop();
            if(dis[now]<=val) continue;
            dis[now]=val;

            int cnt=d[now];
            //printf("d:%d\n",cnt);
            for(int i=0;i<G[now].size();i++)
            {
                int next=G[now][i].to,len=G[now][i].len;
                //printf("now:%d  next:%d  len:%d\n",now,next,len);

                if(next==fa) continue;
                if(cnt)
                {
                    cnt--;
                    continue;
                }

                //printf("now:%d next:%d len:%d\n",now,next,len);
                if(dis[now]+len<dis[next])q.push({next,dis[now]+len,now});
            }
        }

        ll ans=maxs;
        for(int i=1;i<=k;i++) ans=min(ans,dis[e[i]]);
        if(ans!=maxs) cout<<ans<<"\n";
        else cout<<"-1\n";
        for(int i=1;i<=n;i++)
        {
            G[i].clear();
        }
    }
    return 0;
}

错因分析

怎么保证封堵的路一定是到出口最短的?而不只是前往下一个节点最短的?

正解

当前集合到另外一个集合的最短路封住

code


标签:P9650,val,int,ll,cin,fa,Plan,SNCPC2019,top
From: https://www.cnblogs.com/pure4knowledge/p/18216862

相关文章

  • VS Code中使用PlantUML
     安装VSCode:如果你还没有安装VSCode,请访问VSCode官网下载并安装。安装PlantUML插件:打开VSCode后,点击左侧的扩展按钮(或使用快捷键Ctrl+Shift+X)打开扩展面板。在搜索框中输入“PlantUML”,从搜索结果中找到并安装适合你需求的PlantUML插件。通常,“PlantUML”或“PlantU......
  • PostgreSQL的扩展(extensions)-常用的扩展之pg_plan_advsr
    PostgreSQL的扩展(extensions)-常用的扩展之pg_plan_advsrpg_plan_advsr是PostgreSQL社区中的一个扩展,用于分析和改进查询执行计划。它能够自动识别哪些查询执行缓慢,并提供优化建议,以提高查询性能。pg_plan_advsr能够为指定的查询生成性能建议,包括索引创建、SQL语句重写......
  • 画图工具之PlantUML插件使用
    目录1PlantUML插件1.1引言1.2什么是PlantUML1.3PlantUML插件1.3.1IntelliJIDEA中插件1.3.2VSCode中插件1.3.3使用例子1.4PlantUML时序图语法1.4.1声明参与者1.4.2消息传递1.4.2.1同步消息1.4.2.2异步消息1.4.2.3返回消息1.4.2.4自调用1.4.3生命线(Lifeline)与激活......
  • Eplan插件 - 插入表格
    前言在Eplan中,受限于Eplan的基础功能,我们没有办法直接在Eplan中插入表格。当我们需要在Eplan中插入表格的时候只能手动通过矩形、直线、文本的方式一个一个绘制矩形。为了改善这种情况制作了Eplan插件,方便快速的插入表格。插件介绍亮点特征用户界面界面左右布局,左侧用于设置......
  • Langchain Plan-And-Execute框架使用
    代码示例:可以调用自定义工具函数importosos.environ['OpenAI_API_KEY']='sk-piAxxxx替换你的xxxU7F5Zrc'os.environ['SERPAPI_API_KEY']='950fbd942ee77替换你的xxx37b'#设置OpenAI网站和SerpApi网站提供的API密钥fromdotenvimportload_dotenv#用于加......
  • Kaplan-Meier检验和Log-Rank检验
    1.在做生存分析的时候我们实际上是在做一些什么?(1)描述一个组内个体的生存时间在此目标下有两种方法:寿命表法(Lifetablesmethods)&  非参数Kaplan-Meier曲线但在临床研究中使用寿命表法的文章日益减少,使用Kaplan-Meier越来越多(2)比较两个或多个组的生存时间Log-r......
  • vscode plantuml
    创建文件test.wsd@startumlBob->Alice:hello@endumlplantumlhttps://pdf.plantuml.net/1.2020.23/PlantUML_Language_Reference_Guide_zh.pdfplantumlideahttps://blog.csdn.net/qq_52302333/article/details/131341626plantuml......
  • 高效项目管理:如何利用zz-plan在线甘特图工具
    作为项目管理人员,使用zz-planhttps://zz-plan.com/这样的在线甘特图协作软件可以极大地提高项目管理的效率和效果。以下是结合zz-plan特点的一些关键步骤: 1.制定项目计划在zz-plan上创建新的项目,定义项目目标、关键里程碑和最终期限。利用甘特图清晰地规划出每个任务的时......
  • JMeter TestPlan(测试计划)
    一前言环境:window10JMeter5.3TestPlanTestPlan是构建Jmeter的第一步,也是学习JMeter首先接触到的一个东西,但之前却经常忽视了它,把目光放在了线程组及后面的组件上UserDefinedVariables如上,TestPlan里面也可以定义变量,连名字都和线程组里面定义变量的名字一样。但是它俩......
  • 你的数据库用对索引了吗?一文揭秘PolarDB XPlan索引选择
    ​ 对于数据库来说,正确地选择索引是基本要求,选错索引轻则导致查询缓慢,重则导致数据库整体不可用。PolarDB分布式版存在多种不同的索引:局部索引、全局索引、列存索引、归档表索引。局部索引就是单机数据库上常用的索引,目的是避免全表扫描。全局索引是分布式数据库为了避免......