[kuangbin带你飞]专题四 最短路练习 P HDU 4725
来源:互联网 发布:网络写手收入排行 编辑:程序博客网 时间:2024/06/07 00:58
题目地址:https://vjudge.net/contest/66569#problem/P
思路:这个复杂度,按照常规方法建图显然是不行的,然而并没有想出如何建图比较好。看了kuangbin大神的题解,恍然大悟。他将每一层抽象为两个点,然后利用这个出点和入点进行建图。巧妙啊~~~大神果然是不一般。我等菜鸟只能不知所措……
kuangbin大神的题解:http://www.cnblogs.com/kuangbin/archive/2013/09/11/3315071.html
AC代码:
#include<bits/stdc++.h>#define INF 0x3f3f3f3fusing namespace std;const int maxn=1e5*3+10;vector<pair<int,int> >E[maxn];int d[maxn];int n,m,c;void init(){ for(int i=0;i<maxn;i++) { E[i].clear(); d[i]=INF; }}int main(){ int t; scanf("%d",&t); int casei=1; while(t--) { init(); scanf("%d%d%d",&n,&m,&c); for(int i=1;i<=n;i++) { int temp; scanf("%d",&temp); E[i].push_back(make_pair(n+2*temp-1,0)); E[n+2*temp].push_back(make_pair(i,0)); } for(int i=1;i<n;i++) { E[n+2*i-1].push_back(make_pair(n+2*i+2,c)); E[n+2*i+1].push_back(make_pair(n+2*i,c)); } for(int i=1;i<=m;i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); E[a].push_back(make_pair(b,c)); E[b].push_back(make_pair(a,c)); } priority_queue<pair<int,int> >q; d[1]=0; q.push(make_pair(-d[1],1)); while(!q.empty()) { int now=q.top().second; q.pop(); for(int i=0;i<E[now].size();i++) { int v=E[now][i].first; if(d[v]>d[now]+E[now][i].second) { d[v]=d[now]+E[now][i].second; q.push(make_pair(-d[v],v)); } } } if(d[n]==INF) d[n]=-1; printf("Case #%d: %d\n",casei++,d[n]); }}
0 0
- [kuangbin带你飞]专题四 最短路练习 P HDU 4725
- [kuangbin带你飞]专题四 最短路练习 P
- [kuangbin带你飞]专题四 最短路练习
- [kuangbin带你飞]专题四 最短路练习
- [kuangbin带你飞]专题四 最短路练习 A
- [kuangbin带你飞]专题四 最短路练习 B
- [kuangbin带你飞]专题四 最短路练习 C
- [kuangbin带你飞]专题四 最短路练习D
- [kuangbin带你飞]专题四 最短路练习-E
- [kuangbin带你飞]专题四 最短路练习 -F
- [kuangbin带你飞]专题四 最短路练习-G
- [kuangbin带你飞]专题四 最短路练习 MN
- [kuangbin带你飞]专题四 最短路练习 R
- [kuangbin带你飞]专题四 最短路练习 A
- [kuangbin带你飞]专题四 最短路练习 B
- [kuangbin带你飞]专题四 最短路练习 R HDU 437
- [kuangbin带你飞]专题四 最短路练习 -A - Til the Cows Come Home
- [kuangbin带你飞]专题四 最短路练习 A POJ 2387
- 【并行计算-CUDA开发】CUDA ---- Warp解析
- 09. Swing Interfaces
- 关于JVM内存区域划分的一些认识
- JavaScript arguments 对象全面介绍
- python 调用c库
- [kuangbin带你飞]专题四 最短路练习 P HDU 4725
- MySQL之——基于Amoeba实现读写分离
- DualPivotQuicksort 排序算法解析
- Navicat8 for MySQL数据库脚本导出中文乱码问题
- C++ primer 5th课后题 9.19、9.20、9.26、9.27、9.28
- JSP自定义标签
- 死锁产生的原因及四个必要条件
- 赛意递归
- Android中Context的使用