HDU 4479 Shortest path(最短路)
来源:互联网 发布:爱的算法在线 编辑:程序博客网 时间:2024/06/05 17:33
题意:求最短路,要求每一次走的路都比上一次的长。
思路:把所有边排序,然后从短到长的顺序找最短路,相同长度的同时考虑。。
机组数据:
3
5 5
1 2 1
2 3 2
3 4 3
1 4 4
4 5 4
5 5
1 2 2
2 3 3
3 4 4
1 4 5
4 5 5
5 5
1 2 2
2 3 3
3 4 4
1 4 5
4 5 6
#include <cstdio>#include <queue>#include <cstring>#include <algorithm>#include <stack>#include <iostream>using namespace std;#define LL long longconst int N = 10009;const int M = 100009;const LL INF = 0x3f3f3f3f3f3f3f3f;struct load{ int f,t,dis; bool operator<(const load t)const{ return dis<t.dis; }} ld[M];int n,m;int fa[N];LL dis[N];int v[N];LL vdis[N];void oper(int st,int len){ int cnt= 0,l,r,d; for(int i=0;i<len;i++) { l = ld[i+st].f,r= ld[st+i].t,d = ld[st+i].dis; if(fa[l]&&dis[r]>d+dis[l]) { v[cnt] = r; vdis[cnt]= d+dis[l]; cnt++; } if(fa[r]&&dis[l]>d+dis[r]) { v[cnt] = l; vdis[cnt] = d+dis[r]; cnt++; } } for(int i=0;i<cnt;i++) { dis[v[i]] = min(dis[v[i]],vdis[i]); fa[v[i]] = 1; }}void solve(){ memset(fa,0,sizeof(fa)); for(int i=0;i<=n;i++) dis[i] = INF; dis[1] = 0; fa[1] = 1; for(int i=0;i<m;) { int j; for(j=i+1;j<m;j++) { if(ld[j].dis!=ld[i].dis) break; } oper(i,j-i); i = j; } if(dis[n]!=INF) cout<<dis[n]<<endl; else printf("No answer\n");}int main(){ freopen("in.txt","r",stdin); int cas; scanf("%d",&cas); while(cas--) { scanf("%d%d",&n,&m); for(int i=0;i<m;i++) scanf("%d%d%d",&ld[i].f,&ld[i].t,&ld[i].dis); sort(ld,ld+m); solve(); } return 0;}
- HDU 4479 Shortest path(最短路)
- HDU 4479 Shortest path(最短路)
- HDU 3631 Shortest Path 最短路
- 最短路->hdu 3631 Shortest Path
- HDU-2807 The Shortest Path 最短路
- 【HDU】2807 The Shortest Path 最短路
- HDU - 3631 Shortest Path(Floyd最短路)
- hdu 3631 Shortest Path(最短路)
- HDU 5636 Shortest Path(最短路)
- Hdu 5636 Shortest Path【最短路+暴力】
- hdu 5636 Shortest Path(Floyd最短路)
- SGU103 最短路 Shortest Path
- HDU The Shortest Path 矩阵的最短路
- 【HDU】4725 The Shortest Path in Nya Graph 最短路
- hdu 4871 Shortest-path tree(最短路+点分治)
- hdu shortest path 快速矩阵比较 + 最短路
- 【HDU】4871 Shortest-path tree 最短路+点分治
- HDU 3631(Shortest Path) 最短路问题 (Floyd)
- listView条目添加菜单
- 网易有道 IP地址、邮编区号及城市查询、手机号码归属地和身份证 查询接口API
- Microsoft Outlook实用配置(一): 一个文件夹对应一个账户
- NSString对应的编码格式,查询NSStringEncoding
- java ocr 识别中文
- HDU 4479 Shortest path(最短路)
- 《算法》(第四版)第一章练习题Java实现[3]
- Hibernate的数据库事务
- Flex开发性能优化
- DataGrid中添加新的一行,如何获取第一列TextBox的焦点?
- applicationContext.xml配置文件在用户管理中的使用
- FLEX中使用itemRenderer调用父页面的方法使用关键字outerDocument
- ubuntu12.04 安装FFmpeg
- find 配合 rm 递归删除.svn目录