HDU1688-POJ3463-Sightseeing(求次短路的条数)
题意
求出最短路和次短路的条数,当次短路比最短路长度小1时,输出条数之和,反之输出最短路条数。
题解
dis1[],cnt1[],dis2[],cnt2[] 分别表示最短路的长度和条数,次短路的长度和条数。
当当前距离小于当前点最短路长度的时候,更新二者长度和条数。
当当前距离等于当前点最短路长度的时候,更新最短路条数。
当当前距离小于当前点次短路长度的时候,更新次短路的长度和条数。
当当前距离等于当前点次短路长度的时候,更新次短路的条数。
push进队列的时候要标注push进去的是最短路还是次短路。
C++代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; #define endl "\n" typedef long long ll;
const int maxn = 1e5 + ;
const int INF = << ; struct edge{
int to ,nxt,w;
}e[maxn]; int n , m ; int vis[maxn][];
int d[maxn][],dp[maxn][];
int head[maxn],cnt; void init(){
cnt = ;
memset(head,-,sizeof head);
} void add_edge(int u,int v,int w){
e[cnt].to = v;
e[cnt].nxt = head[u];
e[cnt].w = w;
head[u] = cnt++;
} void dijstra(int s, int ee){
for(int i = ;i <= n ; i++)
d[i][] = d[i][] = INF;
memset(vis,,sizeof vis);
memset(dp,,sizeof dp);
d[s][] = ;
dp[s][] = ;
while(){
int maxn = INF;
int v ,flag;
for(int j = ;j <= n ;j ++){
if(!vis[j][] && maxn > d[j][]){
maxn = d[j][];
v = j;
flag = ;
}
else if(!vis[j][] && maxn > d[j][]){
maxn = d[j][];
v = j;
flag = ;
}
}
if(v == ee && flag == ) break;
if(maxn == INF) break;
vis[v][flag] = ;
for(int u = head[v]; ~u; u = e[u].nxt){
int j = e[u].to,w = e[u].w;
if(!vis[j][] && d[v][flag] + w < d[j][]){
d[j][] = d[j][];
d[j][] = d[v][flag] + w;
dp[j][] = dp[j][];
dp[j][] = dp[v][flag];
}else if(!vis[j][] && d[v][flag] + w == d[j][]){
dp[j][] += dp[v][flag] ;
}else if(!vis[j][] && d[v][flag] + w < d[j][]){
d[j][] = d[v][flag] + w;
dp[j][] = dp[v][flag];
}else if(!vis[j][] && d[v][flag] + w == d[j][])
dp[j][] += dp[v][flag];
//cout << dp[j][1] << " " << dp[j][0] << endl;
}
}
} int main(){
ios::sync_with_stdio(false);
cin.tie();
cout.tie();
int s ,ee ,t;
int x, y , w;
cin >> t;
while(t--){
cin >> n >> m;
init();
for(int i = ;i < m ; i++){
cin >> x >> y >> w;
add_edge(x,y,w);
}
cin >> s >> ee;
dijstra(s,ee);
if(d[ee][] + == d[ee][])
cout << dp[ee][] + dp[ee][] << endl;
else
cout << dp[ee][] << endl;
}
return ;
}
HDU1688-POJ3463-Sightseeing(求次短路的条数)的更多相关文章
- HDU 3416 Marriage Match IV (求最短路的条数,最大流)
Marriage Match IV 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/Q Description Do not si ...
- [POJ3463] Sightseeing(次短路 Heap + Dijkstra)
传送门 用dijkstra比较好,spfa可能有的重复 dis[x][2]:dis[x][0]表示起点到x的最短路.dis[x][1]表示起点到x的次短路: tot[x][2]:tot[x][0]表示 ...
- POJ---3463 Sightseeing 记录最短路和次短路的条数
Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9247 Accepted: 3242 Descr ...
- 最短路和次短路的条数(dijstra算法或spfa算法)POJ3463
http://poj.org/problem?id=3463 Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissio ...
- Sightseeing(dijlstar) 计算最短路和次短路的条数
Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10004 Accepted: 3523 Desc ...
- SUSTOJ_路痴的单身小涵(图中最短路的条数)
去年因为太low没有做出来校赛的最后一题,遂今年校赛做了这个题,下面我做详细描述. 原题链接 本题大意:给定一个无向图G,每个边的权值为1,图中L表示起点,C表示终点,#表示未通路,给定时间k,让你判 ...
- hdu3191+hdu1688(求最短路和次短路条数,模板)
hdu3191题意:求出次短路的长度和条数 #include<iostream> #include<cstdio> #include<cstring> #inclu ...
- 【Dijkstra+邻接表求次短路】POJ Sightseeing 3463
Language: Default Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7766 Ac ...
- HDU 1688 Sightseeing 【输出最短路+次短路条数】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1688 题目大意:给n个点,m条有向边.再给出起点s, 终点t.求出s到t的最短路条数+次短路条数. 思 ...
随机推荐
- XML DOM (Document Object Model) 定义了访问和操作 XML 文档的标准方法。
XML DOM DOM 把 XML 文档视为一种树结构.通过这个 DOM 树,可以访问所有的元素.可以修改它们的内容(文本以及属性),而且可以创建新的元素.元素,以及它们的文本和属性,均被视为节点. ...
- BZOJ 5028 小z的加油站
bzoj链接 Time limit 10000 ms Memory limit 262144 kB OS Linux 感想 树上动态gcd的第二题也好了. [x] BZOJ 2257 [JSOI200 ...
- 【UOJ #210】【UER #6】寻找罪犯
题目描述 通过一些不可描述的方式,妹滋滋算出了 51% 的得票率,于是就她就把这个公开给了广大用户 —— UOJ 解散已成定局. 几个小时后,UOJ 创始人伏特跳蚤国王宣布辞职,即日起退出 UOJ 团 ...
- 【BZOJ3811/UOJ36】 玛里苟斯
Description 魔法之龙玛里苟斯最近在为加基森拍卖师的削弱而感到伤心,于是他想了一道数学题. S 是一个可重集合,S={a1,a2,…,an}. 等概率随机取 S 的一个子集 A={ai1,… ...
- lines
lines Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- Oracle开发:dba和sysdba的区别
oracle dba和sysdba的区别如下: 1.dba是一种role对应的是对Oracle实例里对象的操作权限的集合,而sysdba是概念上的role是一种登录认证时的身份标识而已.而且,dba是 ...
- MYSQL与Navicat的连接错误问题
唱,跳,RAP,Basketball MySQL版本安装 遇到的一个坑(密码加密规则被修改导致Navicat连接不上) 众所周知,老师的一些任务,往往做起来不是很困难,只要按着步骤就可以,但是在程序的 ...
- hibernate缓存机制与N+1问题
在项目中遇到的趣事 本文基于hibernate缓存机制与N+1问题展开思考, 先介绍何为N+1问题 再hibernate中用list()获得对象: /** * 此时会发出一条sql,将30个学生全部查 ...
- C#中winform下利用ArcEngine调用ArcGIS Server发布的服务 AE 10
开发环境:vs2010 + AE 10 测试 public Form1() { ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engi ...
- Jmeter之HTTP常用配置元件(默认、头信息和cookies)
在进行HTTP接口的测试时,会用到部分常用的配置元件,现在简单的说明: 一.HTTP请求默认值 在测试同一个项目的HTTP请求接口时,会存在部分相同的信息,可以将这些相同的信息提取出来,使用HTTP请 ...