[AHOI2017初中组]guide 题解
我们无论怎么走,都是要从此点沿最短路径走到终点,所以我们以n为原点跑两边dijkstra就可以了;
而抱怨数可以根据之前跑出来的东西新建一个图,然后跑最短路就好了;
#include <bits/stdc++.h>
#define inc(i,a,b) for(register int i=a;i<=b;i++)
using namespace std;
int head[2000010],cnt;
class littlestar{
public:
int to;
int nxt;
int w1,w2;
int w;
void add(int u,int v,int gg1,int gg2){
to=v;
nxt=head[u];
w1=gg1; w2=gg2;
head[u]=cnt;
}
}star[2000010];
int n,m;
priority_queue<pair<int,int> > q;
int dis[2000010],vis[2000010];
void dijkstra1()
{
memset(dis,0x3f,sizeof(dis));
q.push(make_pair(0,n));
dis[n]=0;
while(q.size()){
int u=q.top().second;
q.pop();
if(vis[u]) continue;
vis[u]=1;
for(int i=head[u];i;i=star[i].nxt){
int v=star[i].to;
if(dis[v]>dis[u]+star[i].w1){
dis[v]=dis[u]+star[i].w1;
q.push(make_pair(-dis[v],v));
}
}
}
}
int dis2[2000010];
void dijkstra2()
{
memset(vis,0,sizeof(vis));
memset(dis2,0x3f,sizeof(dis2));
q.push(make_pair(0,n));
dis2[n]=0;
while(q.size()){
int u=q.top().second;
q.pop();
if(vis[u]) continue;
vis[u]=1;
for(int i=head[u];i;i=star[i].nxt){
int v=star[i].to;
if(dis2[v]>dis2[u]+star[i].w2){
dis2[v]=dis2[u]+star[i].w2;
q.push(make_pair(-dis2[v],v));
}
}
}
}
void dijkstra()
{
memset(vis,0,sizeof(vis));
memset(dis2,0x3f,sizeof(dis2));
q.push(make_pair(0,n));
dis2[n]=0;
while(q.size()){
int u=q.top().second;
q.pop();
if(vis[u]) continue;
vis[u]=1;
for(int i=head[u];i;i=star[i].nxt){
int v=star[i].to;
if(dis2[v]>dis2[u]+star[i].w){
dis2[v]=dis2[u]+star[i].w;
q.push(make_pair(-dis2[v],v));
}
}
}
}
int main()
{
cin>>n>>m;
inc(i,1,m){
int a,b,p,q;
scanf("%d%d%d%d",&a,&b,&p,&q);
star[++cnt].add(b,a,p,q);
}
dijkstra1();
dijkstra2();
inc(u,1,n){
for(int i=head[u];i;i=star[i].nxt){
int v=star[i].to;
if(dis[v]!=dis[u]+star[i].w1) ++star[i].w;
if(dis2[v]!=dis2[u]+star[i].w2) ++star[i].w;
}
}
dijkstra();
cout<<dis2[1];
}
[AHOI2017初中组]guide 题解的更多相关文章
- 洛谷 3106 [USACO14OPEN]GPS的决斗Dueling GPS's 3720 [AHOI2017初中组]guide
[题解] 这两道题是完全一样的. 思路其实很简单,对于两种边权分别建反向图跑dijkstra. 如果某条边在某一种边权的图中不是最短路上的边,就把它的cnt加上1.(这样每条边的cnt是0或1或2,代 ...
- luogu3720 [AHOI2017初中组]guide[最短路]
初中组..唉 题意有点误解,当前在x点走一步,gps产生代价条件是沿非x到n的最短路走. 直接倒着跑两遍$i\sim n$的两种最短路,然后枚举每条边走的时候是否可以在两种最短路上,不是就产生1个代价 ...
- [AHOI2017初中组]guide
题目描述 农场主John最近在网上买了一辆新车,在购买汽车配件时,John不小心点了两次"提交"按钮.导致汽车上安装了两套GPS系统,更糟糕的是John在使用GPS导航时,两套系统 ...
- P3719 [AHOI2017初中组]rexp
P3719 [AHOI2017初中组]rexp一开始想的是类似计算式子的值的东西,用栈.然后发现处理最大值很麻烦,因为处理的很像子过程,所以考虑递归来做.碰到'('就递归一次,碰到'|'就取最大值再递 ...
- P3719 [AHOI2017初中组]rexp——递归模拟
P3719 [AHOI2017初中组]rexp 没有什么算法的题做起来真不适应,这道题深深讽刺了我想用栈维护匹配括号个数的想法: 递归解决就行了: 时刻注意函数返回值是什么,边界条件是什么: #inc ...
- 洛谷P3719 [AHOI2017初中组]rexp
洛谷P3719 [AHOI2017初中组]rexp 题目背景 以下为不影响题意的简化版题目. 题目描述 给出一个由(,),|,a组成的序列,求化简后有多少个a. 化简规则: 1.形如aa...a|aa ...
- 题解 P3717 【[AHOI2017初中组]cover】
题目链接 本题的大致思路就是搜索. 将矩阵初始化成false.先把灯塔标记.在搜一遍灯塔能照到的点并标记.最后搜一遍找被灯塔标记的个数. 详细解释见题解. 题解走起. #include<bits ...
- P3717 [AHOI2017初中组]cover
题目背景 以下为不影响题意的简化版题目. 题目描述 一个n*n的网格图上有m个探测器,每个探测器有个探测半径r,问这n*n个点中有多少个点能被探测到. 输入输出格式 输入格式: 第一行3个整数n,m, ...
- P3718 [AHOI2017初中组]alter
贪心+二分答案 二分最终答案长度 主要问题在check上 ~~我代码写得巨丑,大家还是不要看我的代码了~~ ------------ 1:当mid大于1的时候,贪心策略是这样的: 当前连续的长度大于m ...
随机推荐
- 【线性代数】3-5:独立性,基和维度(Independence,Basis and Dimension)
title: [线性代数]3-5:独立性,基和维度(Independence,Basis and Dimension) categories: Mathematic Linear Algebra ke ...
- Java线程之join
简述 Thread类的join方法用来使main线程进入阻塞状态,进而等待调用join方法的线程执行,join有三个重载方法: public final void join() 使主线程进入阻塞状态, ...
- 微信sdk php签名方法整理
<?php class JSSDK { private $appId; private $appSecret; public function __construct($appId, $appS ...
- php反序列化笔记
普通的魔法方法 public,private,protected属性序列化后的不同 绕过wakeup session反序列化 phar反序列化 1.普通的魔法方法 __construct() 创建一个 ...
- Nginx之编写HTTP模块
1. 常用数据结构 1.1 ngx_str_t typedef struct { /* * 字符串的有效长度 */ size_t len; /* * 有效字符串的起始地址,该字符串通常并不以'\0'结 ...
- 黑马vue---16、vue中通过属性绑定为元素设置class类样式
黑马vue---16.vue中通过属性绑定为元素设置class类样式 一.总结 一句话总结: 这里就是为元素绑定class样式,和后面的style样式区别一下 vue中class样式绑定方式的相对于原 ...
- 排错:Unable to create a new session key. It is likely that the cache is unavailable.
排错:Unable to create a new session key. It is likely that the cache is unavailable. 问题 登录openstack页面, ...
- [Navicat]把1个库的数据迁移到另1个库--数据库备份
需求: 将autotest库中所包含的所有表,从连接centOS7复制1份至localhost.autotest 操作步骤: 1.将centOS7.autotest库中表结构及表数据转为sql语句:c ...
- rpm -qa|grep jdk
转:http://blog.csdn.net/u012110719/article/details/42002221 RPM是RedHat Package Manager(RedHat软件包管理工具) ...
- Http_urllib2
打印http消息在控制台httpHandler=urllib2.HTTPHandler(debuglevel=1)httpsHandler = urllib2.HTTPSHandler(debugle ...