hdu 3191 How Many Paths Are There
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的更多相关文章
- 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 ...
- 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 ...
- hdu 3191 次短路的长度和个数
http://acm.hdu.edu.cn/showproblem.php?pid=3191 求次短路的长度和个数 相关分析在这里http://blog.csdn.net/u012774187/art ...
- HDU 6181:Two Paths(次短路)
Two Paths Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 153428/153428 K (Java/Others) Total S ...
- 【hdu 6181】Two Paths
[链接]http://acm.hdu.edu.cn/showproblem.php?pid=6181 [题意] 让你求从1到n的次短路 [题解] 模板题; 因为点可以重复走; 则一定会有次短路. di ...
- HDU 3191 次短路长度和条数
http://www.cnblogs.com/wally/archive/2013/04/16/3024490.html http://blog.csdn.net/me4546/article/det ...
- HDU 6181:Two Paths(A* + SPFA)
题目链接 题意 给出n个点m条边的无向图,求次短路. 思路 和 POJ 2449 类似,只不过大小要开成long long. #include <bits/stdc++.h> using ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- hdu图论题目分类
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
随机推荐
- protel或Altium Designer中各种栅格(grid)的意义
Snap Grid:捕获栅格.指光标移动的最小间隔.Component Grid:元件放置捕获栅格.指放置元件时,元件移动的间隔.Electrical Grid:电气栅格.电气栅格的作用是在移动或放置 ...
- C++程序面试笔迹六
1.const和static的作用 用最熟悉的语言: 2.阶乘求和 如:1!+2!+3!+4!+……+n!=sum? 3.删除掉字符串中相同的字母只留有一个 如: akkkjjtyy——> ...
- hdu 1874 畅通工程续(最短路)
最短路问题! 最简单的最短路问题! 恩! #include<stdio.h> #define MAX 1000000 int map[500][500]; int n,m,start,en ...
- 搭建Android环境
1.相关文件下载: 1.1.Java jdk下载: JDK下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jre7-downl ...
- 在Ubuntu上下载、编译和安装Android最新源代码
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6559955 看完了前面说的几本书之后,对Lin ...
- Android高级图片滚动控件,编写3D版的图片轮播器
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482089 大家好,好久不见了,最近由于工作特别繁忙,已经有一个多月的时间没写博 ...
- bat处理文件
bat处理文件 作用:可以一次性执行多个命令的文件. 为什么要学bat处理文件? 快速运行一个软件一般都会把软件打包一个jar包,但是jar双击可以运行仅对图形化界面的软件起作用,对于控制台的程序是不 ...
- css画下图
通常我看到这种效果,都是直接ps解决,但是不断重申性能的今天,显然不适应时代的需求啊! 今天看到群里有人问这种效果怎么做了,我在思考的时候,有人已经给出答案了: 我就测试了一下,发现确实可以实现,总结 ...
- Asp.Net中的消息处理---MSMQ系列学习(一)
刚刚毕业一年,比较浮躁,上次面试被问到消息队列,觉得非常的惭愧因为不知道,所以下定决心一定要学会使用它.以前只是听说过有这么个东西,要说是什么,在什么场景下使用却是无从知晓,因为自己也确实没有在项目中 ...
- cookie 的Domain删除失败的问题
最近接手一个老项目,项目中使用的是cookie来做的处理的,新增的时候cookie添加了域, 但是删除的时候没有添加域,导致删除cookie的时候一直失败!还有cookie的创建与删除,应该都必需经过 ...