题意:给定一个有向图,问从起点到终点,最短路+比最短路距离长1的路的个数。

当年数据结构课程设计用A*做过,现在忘光了,2333

 #include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<queue>
#define VM 1005
#define EM 10010
using namespace std;
const int inf=0x3f3f3f3f;
int head[VM],cnt[VM][],dist[VM][],vis[VM][];//dis[i][0]为最短路,dis[i][1]为次短路
int e,src,des,n,m;
struct E
{
int to,w,next;
} edge[EM];
void add(int cu,int cv,int cw)
{
edge[e].to=cv;
edge[e].w=cw;
edge[e].next=head[cu];
head[cu]=e ++;
}
int dij()
{
int i,j,u,min,flag;
memset(dist,0x3f,sizeof(dist));
memset(vis,,sizeof(vis));
memset(cnt,,sizeof(cnt));
dist[src][]=;
cnt[src][]=;
for(i=;i<*n;i++)
{
min=inf;
for(j=;j<=n;j++) //找新的最短路和次短路
if(!vis[j][]&&dist[j][]<min)
{
u=j;
flag=;
min=dist[j][];
}
else if(!vis[j][]&&dist[j][]<min)
{
u=j;
flag=;
min=dist[j][];
}
if(min==inf)
break;
vis[u][flag]=;
for(j=head[u];j!=-;j=edge[j].next)
{
int v=edge[j].to;
int w=edge[j].w+min;
if(dist[v][]>w) //如果找到的新的值比最短路小,则更新最短路和次短路的值
{
dist[v][]=dist[v][];//更新次短路
dist[v][]=w;// 更新最短路
cnt[v][]=cnt[v][];
cnt[v][]=cnt[u][flag];//更新最短路和次短路的个数 }
else if(dist[v][]==w) //如果值等于最短路
cnt[v][]+=cnt[u][flag];//更新最短路的个数
else if(dist[v][]>w) //如果找到的值小于次短路的值,更新次短路
{
dist[v][]=w; //更新次短路的值
cnt[v][]=cnt[u][flag]; //更新次短路的个数
}
else if(dist[v][]==w) //如果找到的值等于次短路的值
cnt[v][]+=cnt[u][flag];//更新次短路的个数
} }
if(dist[des][]+==dist[des][])//如果次短路的值等于最短路值+1
cnt[des][]+=cnt[des][];
return cnt[des][];
}
int main()
{
int T,u,v,w;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
memset(head,0xff,sizeof(head));
e=;
while(m--)
{
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
}
scanf("%d%d",&src,&des);
int ans=dij();
printf("%d\n",ans);
}
return ;
}

poj 3463 次短路的更多相关文章

  1. poj 3463 最短路与次短路&&统计个数

    题意:求最短路和比最短路长度多1的次短路的个数 本来想图(有)方(模)便(版)用spfa的,结果妹纸要我看看dijkstra怎么解.... 写了三遍orz Ver1.0:堆优化+邻接表,WA //不能 ...

  2. poj 3463 最短路+次短路

    独立写查错不能,就是维护一个次短路的dist 题意:给定一个有向图,问从起点到终点,最短路+比最短路距离长1的路的个数. Sample Input25 81 2 31 3 21 4 52 3 12 5 ...

  3. poj 3463 最短路与次短路的方案数求解

    Sightseeing Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8968   Accepted: 3139 Descr ...

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

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

  5. Heavy Transportation POJ 1797 最短路变形

    Heavy Transportation POJ 1797 最短路变形 题意 原题链接 题意大体就是说在一个地图上,有n个城市,编号从1 2 3 ... n,m条路,每条路都有相应的承重能力,然后让你 ...

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

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

  7. poj 3463/hdu 1688 求次短路和最短路个数

    http://poj.org/problem?id=3463 http://acm.hdu.edu.cn/showproblem.php?pid=1688 求出最短路的条数比最短路大1的次短路的条数和 ...

  8. poj 3463 Sightseeing——次短路计数

    题目:http://poj.org/problem?id=3463 当然要给一个点记最短路和次短路的长度和方案. 但往优先队列里放的结构体和vis竟然也要区分0/1,就像把一个点拆成两个点了一样. 不 ...

  9. POJ 3463 有向图求次短路的长度及其方法数

    题目大意: 希望求出走出最短路的方法总数,如果次短路只比最短路小1,那也是可取的 输出总的方法数 这里n个点,每个点有最短和次短两种长度 这里采取的是dijkstra的思想,相当于我们可以不断找到更新 ...

随机推荐

  1. axios通过django的csrf验证

    django会在浏览器的cookie里面保存一项csrftoken=GvzB3ilhlgadishmascacsilreclherlkjhaklsdv3qx4M96XRG88omScDPQaKoMxJ ...

  2. spark技术总结(1)

    1. 请描述spark RDD原理与特征 RDD为Resilient Distributed Datasets缩写,译文弹性分布式数据集. 他是spark系统中的核心数据模型之一,另外一个是DAG模型 ...

  3. Apache HBase Performance Tuning 官文总结

    Apache HBase Performance Tuning RAM, RAM, RAM. 不要让HBase饿死. 请使用64位的平台 必须将swapping设定为0 使用本地硬件来完成hdfs的c ...

  4. 14 Go's Declaration Syntax go语言声明语法

    Go's Declaration Syntax go语言声明语法 7 July 2010 Introduction Newcomers to Go wonder why the declaration ...

  5. AdvStringGrid 点击标题头 自动排序

  6. PowerTool x64驱动模块逆向分析(持续更新)

    比赛打完了,来继续搞了,因为那个主动防御正在写,所以想找找思路正好想到可以来逆向一下PT的驱动模块看看pt大大是怎么写的程序. PT x64版本的驱动模块是这个kEvP64.sys. 0x0 先来看看 ...

  7. Metronic 5.0.5 bootstrap后台管理模板

    演示地址:http://keenthemes.com/preview/metronic/    下载 Dashboard Table

  8. HBase(七)Hbase过滤器

    一.过滤器(Filter) 基础API中的查询操作在面对大量数据的时候是非常苍白的,这里Hbase提供了高级的查询方法:Filter.Filter可以根据簇.列.版本等更多的条件来对数据进行过滤,基于 ...

  9. USACO 5.5 Twofive

    TwofiveIOI 2001 In order to teach her young calvess the order of the letters in the alphabet, Bessie ...

  10. JS 如何准确获取当前页面URL网址信息

    在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs. ...