poj 3463 Sightseeing(次短路+条数统计)
/*
对dij的再一次理解
每个点依旧永久标记
只不过这里多搞一维
0 1 表示最短路还是次短路
然后更新次数相当于原来的两倍
更新的时候搞一下就好了
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
#define maxn 1010
using namespace std;
int T,n,m,num,head[maxn],dis[maxn][],f[maxn][],c[maxn][];
struct edge{
int v,t,pre;
}e[maxn*];
struct node{
int k,r,t;
bool operator < (const node &x) const{
return t>x.t;
}
};
priority_queue<node>q;
int init(){
int x=,f=;char s=getchar();
while(s<''||s>''){if(s=='-')f=-;s=getchar();}
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x*f;
}
void Clear(){
for(int i=;i<=n;i++)
head[i]=;
num=;
while(!q.empty())q.pop();
}
void Add(int from,int to,int dis){
num++;e[num].v=to;
e[num].t=dis;
e[num].pre=head[from];
head[from]=num;
}
void Dij(int u,int v){
memset(dis,/,sizeof(dis));
memset(f,,sizeof(f));
memset(c,,sizeof(c));
c[u][]=;
dis[u][]=;
q.push((node){u,,});
while(!q.empty()){
int k=q.top().k;int r=q.top().r;
q.pop();if(f[k][r])continue;
f[k][r]=;
for(int i=head[k];i;i=e[i].pre){
int v=e[i].v;
if(dis[v][]>dis[k][r]+e[i].t){
dis[v][]=dis[v][];
c[v][]=c[v][];
dis[v][]=dis[k][r]+e[i].t;
c[v][]=c[k][r];
q.push((node){v,,dis[v][]});
q.push((node){v,,dis[v][]});
}
else if(dis[v][]==dis[k][r]+e[i].t){
c[v][]+=c[k][r];
q.push((node){v,,dis[v][]});
}
else if(dis[v][]>dis[k][r]+e[i].t){
dis[v][]=dis[k][r]+e[i].t;
c[v][]=c[k][r];
q.push((node){v,,dis[v][]});
}
else if(dis[v][]==dis[k][r]+e[i].t){
c[v][]+=c[k][r];
q.push((node){v,,dis[v][]});
}
}
}
int ans=c[v][];
if(dis[v][]==dis[v][]+)ans+=c[v][];
printf("%d\n",ans);
}
int main()
{
T=init();
while(T--){
n=init();m=init();
int u,v,t;Clear();
for(int i=;i<=m;i++){
u=init();v=init();t=init();
Add(u,v,t);
}
u=init();v=init();
Dij(u,v);
}
return ;
}
poj 3463 Sightseeing(次短路+条数统计)的更多相关文章
- POJ 3463 Sightseeing (次短路)
题意:求两点之间最短路的数目加上比最短路长度大1的路径数目 分析:可以转化为求最短路和次短路的问题,如果次短路比最短路大1,那么结果就是最短路数目加上次短路数目,否则就不加. 求解次短路的过程也是基于 ...
- poj 3463 Sightseeing( 最短路与次短路)
http://poj.org/problem?id=3463 Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissio ...
- POJ - 3463 Sightseeing 最短路计数+次短路计数
F - Sightseeing 传送门: POJ - 3463 分析 一句话题意:给你一个有向图,可能有重边,让你求从s到t最短路的条数,如果次短路的长度比最短路的长度多1,那么在加上次短路的条数. ...
- poj 3463 Sightseeing——次短路计数
题目:http://poj.org/problem?id=3463 当然要给一个点记最短路和次短路的长度和方案. 但往优先队列里放的结构体和vis竟然也要区分0/1,就像把一个点拆成两个点了一样. 不 ...
- HDU 1688 Sightseeing 【输出最短路+次短路条数】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1688 题目大意:给n个点,m条有向边.再给出起点s, 终点t.求出s到t的最短路条数+次短路条数. 思 ...
- POJ 3463 Sightseeing
最短路+次短路(Dijkstra+priority_queue) 题意是要求你找出最短路的条数+与最短路仅仅差1的次短路的条数. 開始仅仅会算最短路的条数,和次短路的长度.真是给次短路条数跪了.ORZ ...
- HDU3191 【输出次短路条数】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3191 How Many Paths Are There Time Limit: 2000/1000 M ...
- POJ 3463 Sightseeing (次短路经数)
Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissions:10005 Accepted: 3523 Descr ...
- 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 ...
随机推荐
- 业界良心:Square开源Viewfinder,25万行代码全公布!
http://www.csdn.net/article/2014-05-06/2819633-square-open-sources-viewfinder https://github.com/vie ...
- js共享onload事件
问题:通过js进行事件绑定,必须在HTML文档加载完成后再执行js脚本,否则可能因DOM不完整导致无法完成预计的效果,但对于不同的需求如何选用最佳的实现方式呢,这里做了整理,可以做参考. 一.对于小型 ...
- [转]hive中order by,distribute by,sort by,cluster by
转至http://my.oschina.net/repine/blog/296562 order by,distribute by,sort by,cluster by 查询使用说明 1 2 3 4 ...
- 树莓派连接GPS模块
一月份的时候觉得好玩买了树莓派,但是太懒没怎么研究,但最近当初买树莓派时的那个梦想又萦绕心头,决定抽空完成一下当年的计划~ GPS模块是其中很重要的一环,于是在某宝上搜索,找了一家相对便宜也很轻巧的G ...
- 【技术贴】SqlServer2008 R2 安装失败提示出现以下错误 服务 MSSQLSERVERO
Feature: Analysis Services Status: 失败: 请查看日志了解详细信息 MSI status: 已通过 Configuration status: 失败: 请查看下 ...
- Spark:Master High Availability(HA)高可用配置的2种实现
Spark Standalone集群是Master-Slaves架构的集群模式,和大部分的Master-Slaves结构集群一样,存在着Master单点故障的问题.如何解决这个单点故障的问题,Spar ...
- 如何对一个不断更新的HashMap进行排序
如何对一个不断更新的HashMap进行排序? 解答:等到HashMap更新稳定后,用ArrayList包装进行排序.或者自己写一个可以类似HashMap的有序Map,每次更新的时候都进行排序,构建自己 ...
- 【CF】244C Checkposts
题目需要求啥很明确了.主要思想是先计算机联通块,然后每个块内找到一个最小值(以及该值的次数).最小值和结果1,次数乘积为结果2.联通块tarjan可解. /* 427C */ #include < ...
- CSS3 :nth-of-type() 选择器
可以设定第几个元素的样式 案例 css .qrcode img { margin-top: 30px; } .qrcode p:nth-of-type(1) { /*第一个p*/ font-size: ...
- ☀【SeaJS】SeaJS Grunt构建
如何使用Grunt构建一个中型项目?https://github.com/twinstony/seajs-grunt-build spmjshttp://docs.spmjs.org/doc/inde ...