[BalticOI2002]Bicriterial routing
OJ题号:
BZOJ1375、ECNU1468
题目大意:
给定一个无向连通图,每条边有两个权值w1和w2。定义一条路径是优秀的当且仅当没有别的路径满足两个权值的和都比该路径小,求s到t的优秀路径条数。
思路:
将其中一个权值转化为最短路的一个维度,也就是求出对于同一个结点的不同的w1的和,最小的w2和。
然后直接跑Dijkstra就可以了。
#include<cstdio>
#include<cctype>
#include<vector>
#include<functional>
#include<ext/pb_ds/priority_queue.hpp>
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'';
while(isdigit(ch=getchar())) x=(((x<<)+x)<<)+(ch^'');
return x;
}
const int inf=0x7fffffff;
const int V=,W=;
struct Edge {
int to,w1,w2;
};
std::vector<Edge> e[V];
inline void add_edge(const int &u,const int &v,const int &w1,const int &w2) {
e[u].push_back((Edge){v,w1,w2});
}
int n,m,s,t;
struct Vertex {
int dis,id,w;
bool operator > (const Vertex &another) const {
return dis>another.dis;
}
};
int d[V][(V-)*W];
__gnu_pbds::priority_queue<Vertex,std::greater<Vertex>> q;
__gnu_pbds::priority_queue<Vertex,std::greater<Vertex>>::point_iterator p[V][V*W];
inline void dijkstra() {
for(register int i=;i<=n;i++) {
for(register int j=;j<(n-)*W;j++) {
p[i][j]=q.push((Vertex){d[i][j]=(i==s&&j==)?:inf,i,j});
}
}
while(q.top().dis!=inf) {
const Vertex x=q.top();
for(register unsigned i=;i<e[x.id].size();i++) {
const Edge &y=e[x.id][i];
if((x.w+y.w1)<(n-)*W&&(x.dis+y.w2)<d[y.to][x.w+y.w1]) {
q.modify(p[y.to][x.w+y.w1],(Vertex){d[y.to][x.w+y.w1]=x.dis+y.w2,y.to,x.w+y.w1});
}
}
q.modify(p[x.id][x.w],(Vertex){inf,x.id,x.w});
}
q.clear();
}
int main() {
n=getint(),m=getint(),s=getint(),t=getint();
for(register int i=;i<=m;i++) {
int u=getint(),v=getint(),t=getint(),c=getint();
add_edge(u,v,t,c);
add_edge(v,u,t,c);
}
dijkstra();
int ans=,min=inf;
for(register int i=;i<(n-)*W;i++) {
if(d[t][i]==inf) continue;
if(d[t][i]<min) {
ans++;
min=d[t][i];
}
}
printf("%d\n",ans);
return ;
}
[BalticOI2002]Bicriterial routing的更多相关文章
- Bicriterial routing 双调路径 HYSBZ - 1375(分层最短路)
Description 来越多,因此选择最佳路径是很现实的问题.城市的道路是双向的,每条道路有固定的旅行时间以及需要支付的费用.路径由连续的道路组成.总时间是各条道路旅行时间的和,总费用是各条道路所支 ...
- [bzoj1375] [Baltic2002] Bicriterial routing 双调路径
Description 如今的道路收费发展很快.道路的密度越来越大,因此选择最佳路径是很现实的问题.城市的道路是双向的,每条道路有固定的旅行时间以及需要支付的费用. 路径是连续经过的道路组成的.总时间 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- ASP.NET路由[ASP.NET Routing]
ASP.NET路由[ASP.NET Routing] ASP.NET路由允许你在使用URL时不必匹配到网站中具体的文件,因为这个URL不必匹配到一个文件,你使用了描述用户行为且更容易被用户理解的URL ...
- 解读ASP.NET 5 & MVC6系列(12):基于Lamda表达式的强类型Routing实现
前面的深入理解Routing章节,我们讲到了在MVC中,除了使用默认的ASP.NET 5的路由注册方式,还可以使用基于Attribute的特性(Route和HttpXXX系列方法)来定义.本章,我们将 ...
- 解读ASP.NET 5 & MVC6系列(11):Routing路由
新版Routing功能介绍 在ASP.NET 5和MVC6中,Routing功能被全部重写了,虽然用法有些类似,但和之前的Routing原理完全不太一样了,该Routing框架不仅可以支持MVC和We ...
- [ASP.NET MVC 小牛之路]07 - URL Routing
我们知道在ASP.NET Web Forms中,一个URL请求往往对应一个aspx页面,一个aspx页面就是一个物理文件,它包含对请求的处理. 而在ASP.NET MVC中,一个URL请求是由对应的一 ...
- ASP.NET MVC Routing学习笔记(一)
Routing在ASP.NET MVC中是非常核心的技术,属于ASP.NET MVC几大核心技术之一,在使用Routing之前,得先引入System.Web.Routing,但其实不用这么麻烦,因为在 ...
- Routing 功能概述 - 每天5分钟玩转 OpenStack(98)
路由服务(Routing)提供跨 subnet 互联互通功能. 例如前面我们搭建了实验环境: cirros-vm1 172.16.100.3 vlan100 cirros-vm ...
随机推荐
- 【NOIP题解】NOIP2017 TG D2T3 列队
列队,NOIP2017 TG D2T3. 树状数组经典题. 题目链接:洛谷. 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. ...
- 解决 Windows 环境 Git Bash 无法识别 Composer 命令的问题
思路 模拟 Linux,复制一个 composer 文件到 Git Bash 的 /usr 的子目录,并赋予执行权限. 解决 首先,请确定你的 composer.phar 文件路径.我的是: /d/w ...
- 畸形的 dockerfile中的COPY命令-
dockerfile中的COPY是指COPY 指定目录的“子级目录”下所有的目录和文件,到指定目录中,这个shell中的cp命令大相径庭,使得很多人纳闷,怎么cpy过去的文件不是自己想要的
- TableView 的那些坑
1. 分割线填满cell宽度, 并且设置分割线的颜色 1.1 利用系统的分割线填充 1.1.1 tableView 设置如下属性 // 给tableView设置如下属性值 tableView.layo ...
- Python-Web框架的本质
Web框架的本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. Python中使用socket和 ...
- 33 Introducing the Go Race Detector
Introducing the Go Race Detector 26 June 2013 Introduction Race conditions are among the most insidi ...
- Bootstrap FileInput中文API文档
Bootstrap FileInput中文API整理 这段时间做项目用到bootstrap fileinput插件上传文件,在用的过程中,网上能查到的api都不是很全,所以想着整理一份比较详细的文档, ...
- django(2)基本指令
打开 Linux 或 MacOS 的 Terminal (终端)直接在 终端中输入这些命令(不是 python 的 shell中) 如果是 windows 用 cmd(开始 搜索 cmd 或者 快捷键 ...
- 利用sys.dm_db_index_physical_stats查看索引大小/碎片等信息
我们都知道,提高sql server的数据查询速度,最有效的方法,就是为表创建索引,而我们对数据表进行新增,删除,修改的时候,会产生索引碎片,索引碎片多了,对性能产生很大的影响,索引碎片越多对数据库查 ...
- 用户说体验 | 关于阿里百川HotFix你需要了解的一些细节
最近很火的热修复技术,无意中了解到阿里百川也在做,而且Android.iOS两端都支持,所以决定试一试.试用一段时间后,感觉还不错,主要是他们有一个团队在不断维护更新这个产品,可以看到他们的版本更新记 ...