Sightseeing,题解
题目:



题意:
找到从s到t与最短路长度相差少于1的路径总数。
分析:
首先,搞明白题意之后,我们来考虑一下怎么处理这个1,怎样找相差为1的路径呢?我们这样想,如果有相差为1的路径,那么它将会是严格的次短路,所以我们可以再跑最短路的时候顺带着跑了次短路(严格的),然后判断一下和最短路是不是相差一然后就计算一下就好了,当然,这个的时间复杂度其实就是常数大了的E*logE的,所以时间复杂度是没问题的,然后就是代码:
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int maxn=(1e3)*+;
const int maxm=1e5+;
struct E{
int to;
int next;
int val;
}ed[maxm];
int tot;
int head[maxn];
void J(int a,int b,int c){
tot++;
ed[tot].to=b;
ed[tot].val=c;
ed[tot].next=head[a];
head[a]=tot;
}
struct Node{
int dis;
int x;
int ci;
friend bool operator < (Node a,Node b){
return a.dis>b.dis;
}
Node(int a,int b,int c){
x=a;
dis=b;
ci=c;
}
};
priority_queue<Node> qu;
bool vis[maxn][];
int cot[maxn][];
int dis[maxn][];
int main(){
int t;
scanf("%d",&t);
for(int jsjs=;jsjs<=t;jsjs++){
memset(head,,sizeof(head));
tot=;
memset(vis,,sizeof(vis));
memset(cot,,sizeof(cot));
memset(dis,0x3f,sizeof(dis));
int n,m;
scanf("%d%d",&n,&m);
int js1,js2,js3;
for(int i=;i<=m;i++){
scanf("%d%d%d",&js1,&js2,&js3);
J(js1,js2,js3);
}
int s,q;
scanf("%d%d",&s,&q);
dis[s][]=;
cot[s][]=;
qu.push(Node(s,,));
while(!qu.empty()){
Node js=qu.top();
qu.pop();
if(vis[js.x][js.ci])
continue;
vis[js.x][js.ci]=;
for(int i=head[js.x];i;i=ed[i].next){
int to=ed[i].to;
int di=js.dis+ed[i].val;
if(dis[to][]>di){
dis[to][]=dis[to][];
dis[to][]=di;
cot[to][]=cot[to][];
cot[to][]=cot[js.x][js.ci];
qu.push(Node(to,dis[to][],));
qu.push(Node(to,dis[to][],));
continue;
}
if(dis[to][]==di){
cot[to][]+=cot[js.x][js.ci];
continue;
}
if(dis[to][]>di){
dis[to][]=di;
cot[to][]=cot[js.x][js.ci];
qu.push(Node(to,dis[to][],));
continue;
}
if(dis[to][]==di){
cot[to][]+=cot[js.x][js.ci];
continue;
}
}
}
printf("%d\n",cot[q][]+(dis[q][]==dis[q][]+?cot[q][]:));
}
return ;
}
Sightseeing,题解的更多相关文章
- POJ 3463 Sightseeing 题解
题目 Tour operator Your Personal Holiday organises guided bus trips across the Benelux. Every day the ...
- POJ3621:Sightseeing Cows——题解
http://poj.org/problem?id=3621 全文翻译参自洛谷:https://www.luogu.org/problemnew/show/P2868 题目大意:一个有向图,每个点都有 ...
- 洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows 题解
题面 这道题是一道标准的01分数规划: 但是有一些细节可以优化: 不难想到要二分一个mid然后判定图上是否存在一个环S,该环是否满足∑i=1t(Fun[vi]−mid∗Tim[ei])>0 但是 ...
- HDU 1688 Sightseeing&HDU 3191 How Many Paths Are There(Dijkstra变形求次短路条数)
Sightseeing Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- poj 3463 Sightseeing( 最短路与次短路)
http://poj.org/problem?id=3463 Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissio ...
- 网络流(最大流) POJ 1637 Sightseeing tour
Sightseeing tour Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8628 Accepted: 3636 ...
- Sightseeing Cows(最优比率环)
Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8915 Accepted: 3000 ...
- TZOJ 2099 Sightseeing tour(网络流判混合图欧拉回路)
描述 The city executive board in Lund wants to construct a sightseeing tour by bus in Lund, so that to ...
- POJ 1637 - Sightseeing tour - [最大流解决混合图欧拉回路]
嗯,这是我上一篇文章说的那本宝典的第二题,我只想说,真TM是本宝典……做的我又痛苦又激动……(我感觉ACM的日常尽在这张表情中了) 题目链接:http://poj.org/problem?id=163 ...
随机推荐
- 本地存储 localStorage
本地存储localStorage 概念:window对象下面的属性,html5新增的,将5M大小的数据存储本地的浏览器上面. 浏览器支持存储5M大小 本地存储localStorage特点 本地存储属于 ...
- 通过SecureCRT向远程Linux主机上传和下载文件
有时候直接在Linux服务器上通过 wget 或 curl 工具下截比较大的网络文件时会比较慢,这时我们通常会改用在Windows平台通过迅雷等更加现代化的下载功具下好目标文件(迅雷开会员才能更高速的 ...
- 记录RecyclerView的位置并进行恢复
//监听RecyclerView滚动状态 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Overri ...
- web开发网络请求到数据的整合办法
开发中向服务器请求到的数据是特别复杂的,需要从中抽离出需要展示的数据进行展示个和交互. 思路: 先将请求到的复杂数据传递到一个类A中,从类A里抽离出需要的数据.需要展示数据的地方,面向类A开发,类A关 ...
- 微信小程序-Q爱天气
最近找工作,发现微信小程序横行无忌,所以花两天时间把之前的一个天气小demo捡起来,重新上线发布一下.明天更新出小程序的讲解教程.
- 并发系列(一)——线程池源码(ThreadPoolExecutor类)简析
前言 本文主要是结合源码去线程池执行任务的过程,基于JDK 11,整个过程基本与JDK 8相同. 个人水平有限,文中若有表达有误的,欢迎大伙留言指出,谢谢了! 一.线程池简介 1.1 使用线程池的优点 ...
- Asp.Net Mvc 控制器详解
理解控制器 控制器的角色 (1)中转作用:控制器通过前面的学习大家应该知道它是一个承上启下的作用,根据用户输入,执行响应行为(动 作方法),同时在行为中调用模型的业务逻辑,返回给用户结果(视图). ( ...
- 面向对象存储框架:Obase快速入门
在项目中完成对象建模后,可以使用Obase来进行对象的管理(例如对象持久化),本篇教程将创建一个.NET Core控制台应用,来展示Obase的配置和对象的增删改查操作.本篇教程旨在指引简单入门. 本 ...
- 微信小程序入门-刘志敏-专题视频课程
微信小程序入门-269人已学习 课程介绍 微信小程序入门基础,给入门级程序员好的教程.教程中对小程序的介绍到小程序的基本使用都做了详细的介绍,教程以实用的实现作为案例,如列表下拉刷新.抽 ...
- ceph对象存储RADOSGW安装与使用
本文章ceph版本为luminous,操作系统为centos7.7,ceph安装部署方法可以参考本人其他文章. [root@ceph1 ceph-install]# ceph -v ceph vers ...