题目:

  

  

  

题意:

  找到从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,题解的更多相关文章

  1. POJ 3463 Sightseeing 题解

    题目 Tour operator Your Personal Holiday organises guided bus trips across the Benelux. Every day the ...

  2. POJ3621:Sightseeing Cows——题解

    http://poj.org/problem?id=3621 全文翻译参自洛谷:https://www.luogu.org/problemnew/show/P2868 题目大意:一个有向图,每个点都有 ...

  3. 洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows 题解

    题面 这道题是一道标准的01分数规划: 但是有一些细节可以优化: 不难想到要二分一个mid然后判定图上是否存在一个环S,该环是否满足∑i=1t(Fun[vi]−mid∗Tim[ei])>0 但是 ...

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

  5. poj 3463 Sightseeing( 最短路与次短路)

    http://poj.org/problem?id=3463 Sightseeing Time Limit: 2000MS   Memory Limit: 65536K Total Submissio ...

  6. 网络流(最大流) POJ 1637 Sightseeing tour

    Sightseeing tour Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8628   Accepted: 3636 ...

  7. Sightseeing Cows(最优比率环)

    Sightseeing Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8915   Accepted: 3000 ...

  8. TZOJ 2099 Sightseeing tour(网络流判混合图欧拉回路)

    描述 The city executive board in Lund wants to construct a sightseeing tour by bus in Lund, so that to ...

  9. POJ 1637 - Sightseeing tour - [最大流解决混合图欧拉回路]

    嗯,这是我上一篇文章说的那本宝典的第二题,我只想说,真TM是本宝典……做的我又痛苦又激动……(我感觉ACM的日常尽在这张表情中了) 题目链接:http://poj.org/problem?id=163 ...

随机推荐

  1. CUDA优化

    cuda程序优化 一:程序优化概述 1:精度 在关键步骤使用双精度,其他步骤使用单精度,以获得指令吞吐量和精度的平衡. 2:延迟 先缓冲一定量数据,在交给GPU计算.可以获得较高的数据吞吐量. 3:计 ...

  2. HDU-3033 I love sneakers! 题解

    题目大意 有 n 个物品,分成了 k 组,每个物品有体积和价值,把 n 个物品放到容量为 V 的背包中,保证每组至少放一件,求能获得的最大价值,如果不能实现,输出"Impossible&qu ...

  3. 2、react-生命周期1※※※

    生命周期: 一个人的生命周期:从出生到去世 出生得那一刻就是当前这一个人特性固定下来得那一刻:实例化期 出生了之后生长知道死的那一刻:生存期 去世了:销毁期 所以对于一个组件来说它的生命周期是三个时期 ...

  4. JVM内存结构详解

    从java编程语言说起... 1. Java编程语言简介 1.1 编程语言概述 系统级和应用级 系统级:C,C++,go,erlang 应用级:C#,Java,Python,Perl,Ruby,php ...

  5. python模拟网站登陆-滑动验证码

    普通滑动验证 以http://admin.emaotai.cn/login.aspx为例这类验证码只需要我们将滑块拖动指定位置,处理起来比较简单.拖动之前需要先将滚动条滚动到指定元素位置. impor ...

  6. java特性 JDK JRE JVM

    1简单性 2可移植性性(跨平台) 3面向对象 4高性能 5分布式 6动态性 7多线程 8安全性JDK:java开发工具 . JRE:JDK:java运行环境 . JVM:JDK:java虚拟机

  7. Hadoop + Hive + HBase + Kylin伪分布式安装

    问题导读 1. Centos7如何安装配置? 2. linux网络配置如何进行? 3. linux环境下java 如何安装? 4. linux环境下SSH免密码登录如何配置? 5. linux环境下H ...

  8. ESP8266局域网 路由器下作服务器模式串口透传 arduino uno示例 模板参考2

    ESP8266服务器模式串口透传编译需要下载8266的库文件后才可以正常 准备工作 下载一个Arduino IDE,下载8266的库文件ESP8266服务器模式串口透传编译 功能说明 1.直接使用路由 ...

  9. BUAA_OO_2020_Unit2_总结博客

    BUAA_OO_2020_Unit2_总结 2020年春季学期第八周,OO第二单元落下帷幕,三次多线程任务作罢,萌新在OO的世界里又迈出了艰难但有意义的一步,下作总结: 一.三次作业设计策略 回顾三次 ...

  10. 一文梳理JavaScript 事件循环(Event Loop)

    事件循环(Event Loop),是每个JS开发者都会接触到的概念,但是刚接触时可能会存在各种疑惑. 众所周知,JS是单线程的,即同一时间只能运行一个任务.一般情况下这不会引发问题,但是如果我们有一个 ...