题目:http://poj.org/problem?id=3463

当然要给一个点记最短路和次短路的长度和方案。

但往优先队列里放的结构体和vis竟然也要区分0/1,就像把一个点拆成两个点了一样。

不要区分k的fx。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int N=,M=;
int T,n,m,head[N],xnt,dis[N][],f[N][],st,en;
bool vis[N][];
struct Ed{
int next,to,w;
Ed(int n=,int t=,int z=):next(n),to(t),w(z) {}
}ed[M];
struct Node{
int bh,dis;bool fx;
Node(int b=,int d=,bool f=):bh(b),dis(d),fx(f) {}
bool operator< (const Node &b)const
{
return dis>b.dis;
}
};
void add(int x,int y,int z)
{
ed[++xnt]=Ed(head[x],y,z);head[x]=xnt;
}
void dj()
{
memset(vis,,sizeof vis);memset(dis,,sizeof dis);
memset(f,,sizeof f);
priority_queue<Node> q;
dis[st][]=;//dis[st][1]
f[st][]=;//!
q.push(Node(st,,));//no push [1]
while(q.size())
{
Node t=q.top();q.pop();int k=t.bh;bool fx=t.fx;
while(q.size()&&vis[k][fx])t=q.top(),q.pop(),k=t.bh,fx=t.fx;
if(vis[k][fx])break;vis[k][fx]=;
for(int i=head[k],v;i;i=ed[i].next)//不要区分fx,[k][1]也能更新[v][0]!
{
int d=dis[k][fx],w=ed[i].w;
if(d+w<dis[v=ed[i].to][])
{
dis[v][]=dis[v][];f[v][]=f[v][];
dis[v][]=d+w;f[v][]=f[k][fx];
q.push(Node(v,dis[v][],));
q.push(Node(v,dis[v][],));//!because zj's [1] also has been pshp
}
else if(d+w==dis[v][])
f[v][]+=f[k][fx];
else if(d+w<dis[v][])
{
dis[v][]=d+w;f[v][]=f[k][fx];
q.push(Node(v,dis[v][],));
}
else if(d+w==dis[v][])
f[v][]+=f[k][fx];
}
}
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
memset(head,,sizeof head);xnt=;
int x,y,z;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);add(x,y,z);
}
scanf("%d%d",&st,&en);
dj();
if(dis[en][]==dis[en][]+)f[en][]+=f[en][];
printf("%d\n",f[en][]);
}
return ;
}

poj 3463 Sightseeing——次短路计数的更多相关文章

  1. POJ - 3463 Sightseeing 最短路计数+次短路计数

    F - Sightseeing 传送门: POJ - 3463 分析 一句话题意:给你一个有向图,可能有重边,让你求从s到t最短路的条数,如果次短路的长度比最短路的长度多1,那么在加上次短路的条数. ...

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

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

  3. poj 3463 Sightseeing(次短路+条数统计)

    /* 对dij的再一次理解 每个点依旧永久标记 只不过这里多搞一维 0 1 表示最短路还是次短路 然后更新次数相当于原来的两倍 更新的时候搞一下就好了 */ #include<iostream& ...

  4. POJ 3463 Sightseeing (次短路)

    题意:求两点之间最短路的数目加上比最短路长度大1的路径数目 分析:可以转化为求最短路和次短路的问题,如果次短路比最短路大1,那么结果就是最短路数目加上次短路数目,否则就不加. 求解次短路的过程也是基于 ...

  5. POJ 3463 Sightseeing (次短路经数)

    Sightseeing Time Limit: 2000MS   Memory Limit: 65536K Total Submissions:10005   Accepted: 3523 Descr ...

  6. POJ 3463 Sightseeing 【最短路与次短路】

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

  7. poj3463 Sightseeing——次短路计数

    题目:http://poj.org/problem?id=3463 次短路计数问题,在更新最短路的同时分类成比最短路短.长于最短路而短于次短路.比次短路长三种情况讨论一下,更新次短路: 然而其实不必被 ...

  8. POJ 3463 Sightseeing 题解

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

  9. POJ 3463 Sightseeing

    最短路+次短路(Dijkstra+priority_queue) 题意是要求你找出最短路的条数+与最短路仅仅差1的次短路的条数. 開始仅仅会算最短路的条数,和次短路的长度.真是给次短路条数跪了.ORZ ...

随机推荐

  1. 虚构 css 父级选择器

    能 CSS 解决的绝不用 JS,这句话又一次故作装逼地说出来还是挺爽的... 比如下拉列表,能用 CSS 的 :focus 就不用 JS 的 .on("focus blur") 能 ...

  2. 简要总结ajax工作原理及优缺点

    虽然在实际的项目中使用多种ajax请求,但就其工作原理,优缺点尚未深入总结, 参考:http://www.cnblogs.com/SanMaoSpace/archive/2013/06/15/3137 ...

  3. redis 第二篇 系统命令简介 上

    一.系统级命令(不归属任何一个数据结构) 从keys命令说起 1.  可以模式匹配  也就是可以用正则表达式的方式来匹配 格式为KEYS pattern glob风格通配符规则 ?   匹配一个字符 ...

  4. Pandas基础用法-数据处理【全】-转

    完整资料:[数据挖掘入门介绍] (https://github.com/YouChouNoBB/data-mining-introduction) # coding=utf-8 # @author: ...

  5. idea创建git分支

        此时只是在本地创建好了分支,修改源代码后add,commit将本地分支提交到远程仓库            分支已创建,其它成员此时就可以从git拉分支

  6. 第四节课-反向传播&&神经网络1

    2017-08-14 这节课的主要内容是反向传播的介绍,非常的详细,还有神经网络的部分介绍,比较简短. 首先是对求导,梯度的求解.反向传播的核心就是将函数进行分解,分段求导,前向计算损失,反向计算各个 ...

  7. bat定时检测系统服务是否开启

    @echo offrem 定义循环间隔时间和监测的服务:set secs=90set srvname="Apache2a" echo.echo ================== ...

  8. 解决Chrome Safari Opera环境下 动态创建iframe onload事件同步执行

    我们先看下面的代码: setTimeout(function(){ alert(count); },2000); var count = []; document.body.appendChild(c ...

  9. StringUtil方法全集

    org.apache.commons.lang.StringUtils中方法的操作对象是Java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的( ...

  10. PyCharm 的初始设置2 - 打开、新建项目

    03. 新建/打开一个 Python 项目 3.1 项目简介 开发 项目 就是开发一个 专门解决一个复杂业务功能的软件 通常每 一个项目 就具有一个 独立专属的目录,用于保存 所有和项目相关的文件 – ...