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 ...
随机推荐
- ISO7816通讯协议在工控主板EM9160中的实现方案
在新的国家电网智能终端相关标准中,规定了通过专门的加密芯片来保证设备数据安全性的方法,而设备主控单元与加密芯片采用了广泛应用的ISO7816通讯协议.工控主板EM9160为了适应这一新的技术需求,对其 ...
- 【Xamarin 开发 IOS --IOS ViewController生命周期】
ViewController ViewController是IOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内 ...
- Raid1源代码分析--读流程
这篇博文不足之处较多,重新整理了一下,链接:http://www.cnblogs.com/fangpei/p/3890873.html 我阅读的代码的linux内核版本是2.6.32.61.刚进实验室 ...
- sicily 1155 Can I Post the letter
题意:判断有向图两点之间是否可通达! 解法:深搜或广搜(注意避免旧路重行) DFS: #include<iostream> #include<vector> #include& ...
- kafka-分布式消息系统
消息中间件MessageQuene 解耦且可扩展:业务复杂度的提升带来的也是耦合度的提高,消息队列在处理过程中间插入了一个隐含的.基于数据的接口层,两边的处理过程都要实现这一接口.这允许你独立的扩展或 ...
- HDOJ/HDU 2544 最短路---dijkstra算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 这题的思路可以见这里(同一类型):http://blog.csdn.net/xiaozhuaix ...
- ASIHttpRequest:创建队列、下载请求、断点续传、解压缩
ps:本文转载自网络:http://ryan.easymorse.com/?p=12 感谢作者 工程完整代码下载地址:RequestTestDownload1 可完成: 下载指定链接的zip压缩文件 ...
- 执行eclipse,迅速failed to create the java virtual machine。
它们必须在一排,否则会出现The Eclipse executable launcher was unable to locate its companion shared library的错误 打开 ...
- IOS Layer的使用
CALayer(层)是屏幕上的一个矩形区域,在每一个UIView中都包含一个根CALayer,在UIView上的所有视觉效果都是在这个Layer上进行的. CALayer外形特征主要包括: 1.层的大 ...
- asp.net cookie和session的详细使用
cookie使用代码: //设置Cookie HttpCookie setCookie = new HttpCookie("test"); setCookie.Values.Add ...