http://acm.hdu.edu.cn/showproblem.php?pid=3191

这道题求次短路经和路径数

 #include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>
#define maxn 2000
using namespace std;
const int inf=<<;
struct edge
{
int v,w;
}; struct node
{
int d,v;
int mark;
bool operator < (const node &a)const
{
if(d!=a.d)
return d>a.d;
return v>a.v;
}
}; vector<edge>edges[maxn];
int dis[maxn][];
int vis[maxn][];
int path[maxn][];
int n,m,a,b,c,s1,f;
node st; void inti()
{
for(int i=; i<=n; i++)
{
dis[i][]=dis[i][]=inf;
}
memset(path,,sizeof(path));
memset(vis,false,sizeof(vis));
} void dijkstra(int s,int e)
{
inti();
priority_queue<node>q;
dis[s][]=;
path[s][]=;
memset(vis,false,sizeof(vis));
st.d=;
st.v=s;
st.mark=;
q.push(st);
while(!q.empty())
{
node st1=q.top();
q.pop();
if(vis[st1.v][st1.mark]) continue;
vis[st1.v][st1.mark]=true;
for(int i=; i<(int)edges[st1.v].size(); i++)
{
int v1=edges[st1.v][i].v;
int w1=edges[st1.v][i].w;
if(!vis[v1][]&&st1.d+w1<dis[v1][])
{
if(dis[v1][]!=inf)
{
dis[v1][]=dis[v1][];
path[v1][]=path[v1][];
st.d=dis[v1][];
st.v=v1;
st.mark=;
q.push(st);
}
dis[v1][]=st1.d+w1;
path[v1][]=path[st1.v][st1.mark];
st.v=v1;
st.mark=;
st.d=dis[v1][];
q.push(st);
}
else if(!vis[v1][]&&st1.d+w1==dis[v1][])
{
path[v1][]+=path[st1.v][st1.mark];
}
else if(!vis[v1][]&&st1.d+w1<dis[v1][])
{
dis[v1][]=st1.d+w1;
path[v1][]=path[st1.v][st1.mark];
st.d=dis[v1][];
st.v=v1;
st.mark=;
q.push(st);
}
else if(!vis[v1][]&&st1.d+w1==dis[v1][])
{
path[v1][]+=path[st1.v][st1.mark];
}
}
}
} int main()
{
while(scanf("%d%d%d%d",&n,&m,&s1,&f)!=EOF)
{
inti();
for(int i=; i<=n; i++) edges[i].clear();
for(int i=; i<m; i++)
{
scanf("%d%d%d",&a,&b,&c);
edge m1;
m1.v=b;
m1.w=c;
edges[a].push_back(m1);
}
dijkstra(s1,f);
printf("%d %d\n",dis[f][],path[f][]);
}
return ;
}

hdu 3191 How Many Paths Are There的更多相关文章

  1. hdu 3191 How Many Paths Are There (次短路径数)

    How Many Paths Are There Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java ...

  2. 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 ...

  3. hdu 3191 次短路的长度和个数

    http://acm.hdu.edu.cn/showproblem.php?pid=3191 求次短路的长度和个数 相关分析在这里http://blog.csdn.net/u012774187/art ...

  4. HDU 6181:Two Paths(次短路)

    Two Paths Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 153428/153428 K (Java/Others) Total S ...

  5. 【hdu 6181】Two Paths

    [链接]http://acm.hdu.edu.cn/showproblem.php?pid=6181 [题意] 让你求从1到n的次短路 [题解] 模板题; 因为点可以重复走; 则一定会有次短路. di ...

  6. HDU 3191 次短路长度和条数

    http://www.cnblogs.com/wally/archive/2013/04/16/3024490.html http://blog.csdn.net/me4546/article/det ...

  7. HDU 6181:Two Paths(A* + SPFA)

    题目链接 题意 给出n个点m条边的无向图,求次短路. 思路 和 POJ 2449 类似,只不过大小要开成long long. #include <bits/stdc++.h> using ...

  8. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  9. hdu图论题目分类

    =============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...

随机推荐

  1. Unity脚本的生命周期中几个重要的方法

    1.function Update () {} 正常更新,用于更新逻辑.此方法每帧都会由系统自动调用一次.2.function LateUpdate () {} 推迟更新,此方法在Update() 方 ...

  2. hdu4085

    http://acm.hdu.edu.cn/showproblem.php?pid=4085 斯坦纳树. 用状压DP. 一共有2K个关键点:1,2...,K和N-K+1,N-K+2...,N,我们用一 ...

  3. Android实现摇晃手机的监听

     摘自:http://blog.csdn.net/xwren362922604/article/details/8515343 监听摇晃手机的类: /**  * @author renxinwei ...

  4. hdu5017:补题系列之西安网络赛1011

    补题系列之西安网络赛1011 题目大意:给定一个椭球: 求它到原点的最短距离. 思路: 对于一个椭球的标准方程 x^2/a^2 + y^2/b^2 +z^2/c^2=1 来说,它到原点的最短距离即为m ...

  5. Lambda 表达式的示例-来源(MSDN)

    本文演示如何在你的程序中使用 lambda 表达式. 有关 lambda 表达式的概述,请参阅 C++ 中的 Lambda 表达式. 有关 lambda 表达式结构的详细信息,请参阅 Lambda 表 ...

  6. [置顶] android之存储篇_SQLite数据库_让你彻底学会SQLite的使用

    SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中 ...

  7. (poj 1475) Pushing Boxes

    Imagine you are standing inside a two-dimensional maze composed of square cells which may or may not ...

  8. [IOI1999]花店橱窗布置(DP路径记录)

    题目:[IOI1999]花店橱窗布置 问题编号:496 题目描述 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序编号,V ...

  9. windows下删除服务的方法

    删除的办法有两个: 办法一: 用sc.exe这个Windows命令 开始——运行——cmd.exe,然后输入sc就可以看到了.使用办法很简单: sc delete "服务名" (如 ...

  10. <经验杂谈>C#/.Net字符串操作方法小结

    字符串操作是C#中最基本的.最常见的.也是用的最多的,以下我总结 了几种常见的方法 1.把字符串按照分隔符转换成 List /// <summary> /// 把字符串按照分隔符转换成 L ...