[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 ...
随机推荐
- Hibernate5笔记2--单表的增删改查操作
单表的增删改查操作: (1)定义获取Session和SessionFactory的工具类: package com.tongji.utils; import org.hibernate.Session ...
- JDK1.8源码之String
一.String类型 引用博文连接: https://blog.csdn.net/ylyg050518/article/details/52352993 一.成员变量 //用于存储字符串 priva ...
- 【CTF MISC】文件内容反转方法-2017世安杯CTF writeup详解
Reverseme 用winhex打开,发现里面的字符反过来可以正常阅读,所以文件被倒置了 Python解题程序如下 with open('reverseMe','rb') as f: with op ...
- int、long、long long取值范围
unsigned int 0-4294967295 int -2147483648-2147483647 unsigned long 0-4294967295 long -214748 ...
- Oracle 11G R2 RAC中的scan ip 的用途和基本原理【转】
Oracle 11G R2 RAC增加了scan ip功能,在11.2之前,client链接数据库的时候要用vip,假如你的cluster有4个节点,那么客户端的tnsnames.ora中就对应有四个 ...
- MySQL5.7之多源复制&Nginx中间件(上)【转】
有生之年系列----MySQL5.7之多源复制&Nginx中间件(上)-wangwenan6-ITPUB博客http://blog.itpub.net/29510932/viewspace-1 ...
- openjudge-NOI 2.5基本算法之搜索 专题题解目录
1.1700 八皇后问题 2.1756 八皇后 3.1789 算24
- WebApi Owin SelfHost OAuth2 - client_credentials
参考:http://neverc.cnblogs.com/p/4970996.html
- robotframework-ride多次运行,有时候不显示日志信息
解决方法: 修改"C:\Python27\lib\site-packages\robotide\contrib\testrunner\testrunner.py"文件pop方法中 ...
- 制作macOS10.12系列的系统镜像文件
制作macOS10.12系列的系统镜像文件步骤,过程也比较简单,十来个命令.以10.12.6为例,首先,在苹果商店下载系统安装包APP,或者网上下载后把安装APP复制到 应用程序 文件夹. 然后打 ...