Codevs 1021 玛丽卡

04-协议基础03:USB 2.0信号与电气特性 USB 2.0使用两根差分信号线D+/D-进行数据传输,支持低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)三种速率。USB总线为主从模式,所有事务由Host发起。端电阻值作用HostRpd(D+)15KΩ±5%下拉,默认低电平HostRpd(D-)15KΩ±5%下拉,默认低电平全速设备Rpu(D+)1.5KΩ±5%上拉到3.3V,标识全速低速设备Rpu(D-)1.5KΩ±5%上拉到3.3V,标识低速USB 2.0硬件要点。 阅读详情

Codevs 1021 玛丽卡

题目地址:http://codevs.cn/problem/1021/
题目描述 Description

麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。
因为她和他们不住在同一个城市,因此她开始准备她的长途旅行。
在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城市路上所需花费的时间。
麦克在车中无意中听到有一条路正在维修,并且那儿正堵车,但没听清楚到底是哪一条路。无论哪一条路正在维修,从玛丽卡所在的城市都能到达麦克所在的城市。
玛丽卡将只从不堵车的路上通过,并且她将按最短路线行车。麦克希望知道在最糟糕的情况下玛丽卡到达他所在的城市需要多长时间,这样他就能保证他的女朋友离开该城市足够远编写程序,帮助麦克找出玛丽卡按最短路线通过不堵车道路到达他所在城市所需的最长时间(用分钟表示)。

输入描述 Input Description

第一行有两个用空格隔开的数 N 和M,分别表示城市的数量以及城市间道路的数量。 1≤N≤1000 , 1≤M≤N∗(N−1)/2 。城市用数字 1 至 N标识,麦克在城市 1 中,玛丽卡在城市 N 中。
接下来的M行中每行包含三个用空格隔开的数 A ,B和 V 。其中1≤A, B≤N , 1≤V≤1000 。这些数字表示在 A 和城市B中间有一条双行道,并且在 V 分钟内是就能通过。

输出描述 Output Description

输出文件的第一行中写出用分钟表示的最长时间,在这段时间中,无论哪条路在堵车,玛丽卡应该能够到达麦克处,如果少于这个时间的话,则必定存在一条路,该条路一旦堵车,玛丽卡就不能够赶到麦克处。

样例输入 Sample Input

5 7
1 2 8
1 4 10
2 3 9
2 4 10
2 5 1
3 4 7
3 5 10

样例输出 Sample Output

27
  • 这道题先跑一遍SPFA,找出 点1 到 点N 最短路的路径,然后枚举这条路径上的所有边,依次将它们的权值赋为 +∞ 然后跑一遍SPFA。答案就是 Max(disN) 了。

    • 因为如果堵车那条路不在 点1 到 点N 最短路的路径 上时,最小时间应该就是 点1 到 点N 的距离。
    • #include <cstdio>
      #include <deque>
      #define INF 1000000007
      int n, m;
      int hu[1005], hv[1005], f[1005];
      bool vis[1005];
      struct edge_type
      {
          int u, v, w, nu, nv;
      };
      edge_type edge[1000005];
      int dis[1005];
      std::deque<int> q;
      int main()
      {
          int x, y, z;
          scanf("%d%d", &n, &m);
          for (int i = 1; i <= m; ++i)
          {
              scanf("%d%d%d", &x, &y, &z);
              edge[i].u = x;
              edge[i].v = y;
              edge[i].w = z;
              edge[i].nu = hu[x];
              edge[i].nv = hv[y];
              hu[x] = i;
              hv[y] = i;
          }
          int tmp, now, p, ans = 0, ttmp, ei;
              q.clear();
              for (int i = 1; i <= n; ++i)
                  dis[i] = INF;
              dis[1] = 0;
              f[1] = 0;
              vis[1] = true;
              q.push_back(1);
              while (!q.empty())
              {
                  now = q.front();
                  q.pop_front();
                  vis[now] = false;
                  p = hu[now];
                  while (p)
                  {
                      if (dis[edge[p].v] > dis[now] + edge[p].w)
                      {
                          dis[edge[p].v] = dis[now] + edge[p].w;
                          f[edge[p].v] = p;
                          if (!vis[edge[p].v])
                          {
                              q.push_back(edge[p].v);
                              vis[edge[p].v] = true;
                          }
                      }
                      p = edge[p].nu;
                  }
                  p = hv[now];
                  while (p)
                  {
                      if (dis[edge[p].u] > dis[now] + edge[p].w)
                      {
                          dis[edge[p].u] = dis[now] + edge[p].w;
                          f[edge[p].u] = p;
                          if (!vis[edge[p].u])
                          {
                              q.push_back(edge[p].u);
                              vis[edge[p].u] = true;
                          }
                      }
                      p = edge[p].nv;
                  }
              }
          ttmp = n;
          ei = f[n];
          while(ei)
          {
              tmp = edge[ei].w;
              edge[ei].w = INF;
              q.clear();
              for (int i = 1; i <= n; ++i)
                  dis[i] = INF;
              dis[1] = 0;
              f[1] = 0;
              vis[1] = true;
              q.push_back(1);
              while (!q.empty())
              {
                  now = q.front();
                  q.pop_front();
                  vis[now] = false;
                  p = hu[now];
                  while (p)
                  {
                      if (dis[edge[p].v] > dis[now] + edge[p].w)
                      {
                          dis[edge[p].v] = dis[now] + edge[p].w;
                          f[edge[p].v] = p;
                          if (!vis[edge[p].v])
                          {
                              q.push_back(edge[p].v);
                              vis[edge[p].v] = true;
                          }
                      }
                      p = edge[p].nu;
                  }
                  p = hv[now];
                  while (p)
                  {
                      if (dis[edge[p].u] > dis[now] + edge[p].w)
                      {
                          dis[edge[p].u] = dis[now] + edge[p].w;
                          f[edge[p].u] = p;
                          if (!vis[edge[p].u])
                          {
                              q.push_back(edge[p].u);
                              vis[edge[p].u] = true;
                          }
                      }
                      p = edge[p].nv;
                  }
              }
              if (ans < dis[n])
                  ans = dis[n];
              edge[ei].w = tmp;
              ttmp = edge[ei].u ^ edge[ei].v ^ ttmp;
              ei = f[ttmp];
          }
          printf("%d", ans);
      }
Spine骨骼动画查看器 - Skeleton Viewer 骨骼动画是现代游戏和动画制作中常用的技术之一。Spine骨骼动画查看器(Skeleton Viewer)是一个官方提供的工具,用于查看和调试Spine骨骼动画。本文将介绍Skeleton Viewer的功能和使用方法,并提供相应的源代码示例。通过Skeleton Viewer,开发者可以直观地查看和调试Spine骨骼动画,包括骨骼结构、动画播放和事件触发等。这有助于提高骨骼动画的质量和效果,并加速开发过程。以上代码演示了如何使用Skeleton Viewer查看和播放Spine骨骼动画。 阅读详情

相关推荐

用 n8n 提取静态网页内容:从 HTTP Request 到 HTML 节点全解析

本文介绍了如何使用n8n的HTTP Request和HTML节点组合提取静态网页内容。首先通过HTTP Request节点获取网页HTML源码,然后使用HTML节点解析并提取所需数据。关键点包括:1)HTTP Request节点设置URL和GET方法;2)HTML节点配置Source Data为JSON并指定data字段;3)重点掌握Extraction Values参数,特别是CSS选择器(使用.和#定位元素)、Key命名、Return Value类型选择等。文章通过实例演示了标题和正文的提取方法,并提供

muyouking 4567

【codevs1021】玛丽卡,以前屯着的最短路

传送门 写在前面:以前屯着的一个最短路,感觉有点恶心o_O 思路:最初用的堆优化dijskra+邻接矩阵,结果T了3组,就放在那里了。现在捡起来用了SPFA+邻接表枚举所有边,T了2组,然后想到先求出最短路,枚举最短路径上的边就可以了,但是调了半天都不对,最后发现是循环变量名打错了…… 代码:#include<bits/stdc++.h> using namespace std; int to

xiaoyimi的博客 1243

树莓派教程(基于python编程)--入门篇

一:格式化SD卡 SD卡插入读卡器连接电脑,使用SDFormatter对SD卡进行格式化 (重装烧录也要进行着SD卡格式化操作) 二:下载官方镜像 http://downloads.raspberrypi.org/raspbian_latest 三:烧录SD卡 使用Win32DiskImager将镜像烧录到格式化后的SD卡 SD卡盘根目录(/boot)下新建一个命名为ssh的...

qq_42109746的博客 6万+

1021 玛丽卡 - Wikioi

题目描述 Description麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行。 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城市路上所需花费的时间。 麦克在车中无意中听到有一条路正在维修,并且那儿正堵车,但没听清楚到底是哪一条路。无论哪一条路正在维修,从玛丽卡所在的城市都能到达麦克所在...

weixin_30305735的博客 214

Android 13/14/15 默认授权应用权限的实现方法

Android版本修改方式实现原理13/14修改Permission.java将所有权限标记为Normal权限15修改DeviceIdleController.java + DefaultPermissionGrantPolicy.java监听应用安装并主动授权。

m0_60898338的博客 2911

全志V3S嵌入式驱动开发(驱动开发准备)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 之前的文章都是教大家怎么搭建环境、看原理图、编译内核和根文件系统、做镜像,直到现在才进入驱动开发的主题。毕竟整个专栏的目的,还是希望大家能够学会驱动外部硬件。驱动好硬件,分成硬件和软件两个部分,硬件的部分比较好理解,就是看相关的信号有没有对接上即可,但是软件对接、甚至于怎么写软件,大家好像接触的比较少,所以这个时候,就可以简单讨论一下,怎么样才能写驱动代码。 1、了解外部驱动芯

嵌入式-老费,一个分享专业嵌入式知识的blog 2025

CodeVS1021 玛丽卡 解题报告

1021 玛丽卡 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。因为她和他们不住在同一个城市,因此她开始准备她的长途旅行。在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城市路上所需花费的时间。麦克在车中无意中听到有一条路...

Western_Street的博客 530

用Python爬取大连商品交易所期货实时行情:从入门到实战

python复制编辑# utils.py"豆粕": "M0","铁矿石": "I0","聚乙烯": "L0","玉米": "C0","聚丙烯": "PP0","棕榈油": "P0"本项目展示了:✅ 如何从新浪财经 API获取主力合约实时数据✅ 使用Python异步爬虫技术) 提升效率✅ 利用pandas和matplotlib进行结构化分析与可视化✅ 具备良好的扩展性,可对接金融、农业、能源等数据需求场景✅ 可作为期货量化策略数据源✅ 可嵌入自动化报告系统。

2201_76125261的博客 1247

Codevs1021玛丽卡题解

http://codevs.cn/problem/1021/题目大意 在一张无向图中求删去一条边后的从点1到点n的最短路的最大值。 点数≤\le1000,边数≤106\le10^6。 题解 一开始的思路是枚举所有边,然后分别跑最短路,然后妥妥地T。 先考虑不删边的情况,那么可以跑一次最短路。(众:废话!) 然而我们的目的是把这一条最短路记录下来。实际上,要删的边都在最短路上。(否则删了一条

t14t41t的专栏 1221

【100%通过率】2024华为OD机试真题E卷 C++ 实现【栈数据合并/空栈压数】

向一个空栈压入正整数,每当压入一个整数时,执行以下规则(设: 栈顶至栈底整数依次编号为n1、n2...nx, n1为最新压入的整数)

MISAYAONE的博客 1553

100天精通Python(基础篇)——第4天:数据类型全解析_从基础到转换

数据类型全解析_从基础到转换

努力让自己发光,对的人才能迎着光而来 11万+

codevs 1021 玛丽卡

题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。因为她和他们不住在同一个城市,因此她开始准备她的长途旅行。 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城市路上所需花费的时间。 麦克在车中无意中听到有一条路正在维修,并且那儿正堵车,但没听清楚到底是哪一条路。无论哪一条路正在维修,从玛丽卡所...

dataxiang6224的博客 108

基于物联网设计的蜂箱智能监测系统设计

为解决传统养蜂业依赖人工、管理效率低下、干扰蜂群等问题,本项目设计并实现了一套基于物联网(IoT)的蜂箱智能监测系统。

684

【CODEVS 1021】玛丽卡 SPFA+枚举

好久没有写过解题报告了,准确的说是好久没有写过代码了。作为一只OI届的咸鱼,回去搞文化课也仍然是一只咸鱼。期末考炸了,写代码的能力也一直下降。。。。现在还是找出时间写一下代码,为NOIP2016做准备。有时间要多写写代码。 CODEVS— 1021:http://codevs.cn/problem/1021/ 题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。

Qantun_Mechanics的博客 1489

假人有限元模型

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

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...

codevs 1021 玛丽卡(spfa)

题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。     因为她和他们不住在同一个城市,因此她开始准备她的长途旅行。     在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城市路上所需花费的时间。     麦克在车中无意中听到有一条路正在维修,并且那儿正堵车,但没听清楚到底是哪一条路。无论哪一条路正在维修,从玛丽卡所在的

xuzc1999的博客 687

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

洛谷P1186 CodeVS1021 玛丽卡

Description: 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行。 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城市路上所需花费的时间。 麦克在车中无意中听到有一条路正在维修,并且那儿正堵车,但没听清楚到底是哪一条路。无论哪一条路正在维修,从玛丽卡所在的城市都能到达麦克所在的城市...

afhvqwzk819746的博客 174

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【codevs 1021】玛丽卡

题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。因为她和他们不住在同一个城市,因此她开始准备她的长途旅行。在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城市路上所需花费的时间。麦克在车中无意中听到有一条路正在维修,并且那儿正堵车,但没听清楚到底是哪一条路。无论哪一条路正在维修,从玛丽卡所在的城市都能到达麦克所在的城市。玛丽卡将只从不

LOI_Sherlock 289

玛丽卡 (codevs p1021;洛谷p1186)

玛丽卡堆优化Dijkstra spfa(始终一个点TLE 希望给予优化)题目描述麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行。 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城市路上所需花费的时间。 麦克在车中无意中听到有一条路正在维修,并且那儿正堵车,但没听清楚到底

Starlight 1684

codevs 1021 玛丽卡 解题报告

玛丽卡

Hawo11的博客 709
上一篇: Python - KMP算法
下一篇: KMP快速字符串匹配
MagHSK
博客等级 码龄15年 8粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值