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的最短路条数+次短路条数. 思 ...
随机推荐
- FZU 2203 单纵大法好 (二分 && 贪心)
题意 : 老S最近喜欢上某个搜集战舰的游戏,这个游戏中很重要的一个内容是能编排自己的战舰,通过出击完成任务来获取资源或新的战舰.大家都说老S是一个“直男”,所以他喜欢把战舰排成一条直线.目前老S正准备 ...
- POJ 1912 凸包
题目: #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib& ...
- 大哥带的mssql注入拿shell
任务二 注入点拿shell 路径的爆破 https://blog.csdn.net/edu_aqniu/article/details/78409451 0X01判断 是否为判断当前数据库用户名是否为 ...
- 电脑出现了一块tap window adapter v9 网卡 以及虚拟机桥接模式无法通信原因
计算机与外界局域网的连接是通过主机箱内插入一块网络接口板(或者是在笔记本电脑中插入一块PCMCIA卡).网络接口板又称为通信适配器或网络适配器(network adapter)或网络接口卡NIC(Ne ...
- eclipse 4.32 安装 gradle
更新网址 http://dist.springsource.com/release/TOOLS/gradle
- Vue知识整理12:事件绑定
采用v-on命令进行事件的绑定操作,通过单击按钮,实现按钮文字上数值的增加 带参数的事件过程 可以添加$event事件,实现事件信息的获取
- WPF 绑定数据方式
======================================================================== Foreground="{Binding P ...
- 5.2.k8s.Secret
#Secret Secret存储密码.token.密钥等敏感数据 Secret以Volume或环境变量方式使用 #Secret类型 Opaque : base64 编码格式的 Secret kuber ...
- HTML CSS JS 特殊字符(转义)表
HTML有许多特殊的字符,您对此有多少了解?平时在WEB制作中,您又有用到多少?或者说你在平时使用之时,是否也会碰到,有许多特殊字符要如何打印出来?比如说“笑脸”,比如说“版权号”.要是你用时忘记了这 ...
- jenkins中通过Publish Over SSH将项目部署到远程机器上
Publish Over SSH插件使用在使用Publish Over SSH之前,需要制作SSH私钥.机器间做免密登录配置.假设机器A,ip为192.168.AA.AAA,机器B: 192.168. ...