当前位置: 首页 > news >正文

AC日记——魔法森林 洛谷 P2387

魔法森林

 

思路:

  spfa水过(正解lct);

 

代码:

#include <bits/stdc++.h>
using namespace std;
#define maxn 50005
#define maxm 200005
#define INF 0x3f3f3f3f
struct RoadType {
    int u,v,ai,bi;
    bool operator<(const RoadType pos)const
    {
        if(ai==pos.ai) return bi<pos.bi;
        return ai<pos.ai;
    }
};
struct RoadType road[maxm];
int n,m,head[maxn],E[maxm],V[maxm],W[maxm],ans(INF);
int dis[maxn],cnt;
bool vis[maxn];
queue<int>que;
inline void in(int &now)
{
    char Cget=getchar();now=0;
    while(Cget>'9'||Cget<'0')Cget=getchar();
    while(Cget>='0'&&Cget<='9')
    {
        now=now*10+Cget-'0';
        Cget=getchar();
    }
}
inline void edge_add(int u,int v,int w)
{
    E[++cnt]=head[u],V[cnt]=v,W[cnt]=w,head[u]=cnt;
    E[++cnt]=head[v],V[cnt]=u,W[cnt]=w,head[v]=cnt;
}
int main()
{
    in(n),in(m);
    for(int i=1;i<=m;i++)
    {
        in(road[i].u);
        in(road[i].v);
        in(road[i].ai);
        in(road[i].bi);
    }
    for(int i=2;i<=n;i++) dis[i]=INF;
    sort(road+1,road+m+1);
    for(int i=1;i<=m;i++)
    {
        if(road[i].u==road[i].v) continue;
        edge_add(road[i].u,road[i].v,road[i].bi);
        if(!vis[road[i].u]) que.push(road[i].u),vis[road[i].u]=true;
        if(!vis[road[i].v]) que.push(road[i].v),vis[road[i].v]=true;
        if(road[i].ai==road[i-1].ai&&road[i].bi==road[i-1].bi) continue;
        while(!que.empty())
        {
            int now=que.front();que.pop(),vis[now]=false;
            for(int i=head[now];i;i=E[i])
            {
                if(dis[V[i]]>max(dis[now],W[i]))
                {
                    dis[V[i]]=max(dis[now],W[i]);
                    if(!vis[V[i]])
                    {
                        vis[V[i]]=true;
                        que.push(V[i]);
                    }
                }
            }
        }
        if(ans>road[i].ai+dis[n]) ans=road[i].ai+dis[n];
    }
    printf("%d\n",ans==INF?-1:ans);
    return 0;
}

 

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6970088.html

相关文章:

  • Nginx/LVS/HAProxy负载均衡软件的优缺点详解
  • WebRTC学习资料大全
  • 分布式文件系统 IPFS
  • 第一章、shell脚本基础
  • JAVASE学习笔记:第十章 SWing经常使用控件类(二)
  • DDD中分层架构
  • ssl证书生成方法
  • 谈选择的重要性
  • centos7安装设置Nfs服务器
  • 深入.NET平台和C#编程
  • Apache Zeppelin 安装
  • 2017 十大最佳用于隐私和安全保护的 Linux 发行版
  • Windows pip安装失败:no module named pkg_resources
  • 去哪儿网怎么沦为骗子的平台了,一步步揭开去哪儿网欺骗消费者的把戏
  • 不上全站https的网站你们就等着被恶心死吧
  • 《剑指offer》分解让复杂问题更简单
  • IDEA常用插件整理
  • JAVA_NIO系列——Channel和Buffer详解
  • java中的hashCode
  • springboot_database项目介绍
  • Vue全家桶实现一个Web App
  • 从setTimeout-setInterval看JS线程
  • 分布式熔断降级平台aegis
  • 工作手记之html2canvas使用概述
  • 聊聊redis的数据结构的应用
  • 区块链将重新定义世界
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何合理的规划jvm性能调优
  • 三栏布局总结
  • 无服务器化是企业 IT 架构的未来吗?
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 自制字幕遮挡器
  • puppet连载22:define用法
  • Python 之网络式编程
  • #if #elif #endif
  • (arch)linux 转换文件编码格式
  • (rabbitmq的高级特性)消息可靠性
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (二)斐波那契Fabonacci函数
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (离散数学)逻辑连接词
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core跨平台微服务学习资源
  • .net Signalr 使用笔记
  • .net 程序发生了一个不可捕获的异常
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .Net接口调试与案例
  • @GetMapping和@RequestMapping的区别
  • [1204 寻找子串位置] 解题报告
  • [20160807][系统设计的三次迭代]
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...