题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2851

题目大意:给出N条路径,M个终点(是路径的编号) 。重合的路径才算连通的,且路径是单向的。每条路径都有一个cost。求到达指定路径的最小cost。

解题思路

题目读懂了,但是却看不懂样例。

题目中的最小单位路径应该看成一个点,cost在点上。

建图

枚举任意两条路径$i$、$j$,如果有交叉,即$E[i]>=S[j]$那么从i到j连一条有向边。cost保留在$W[i]$、$W[j]$上。

Dijkstra

由于起点必须在第一条路径,所以d[1]=W[1],其余d[i]=inf。

Dijkstra后,再输入对于每个终点,d[des]就是结果。

代码

#include "cstdio"
#include "queue"
#include "cstring"
using namespace std;
#define maxn 2005
#define inf 0x3f3f3f3f
int head[maxn],tot,vis[maxn],S[maxn],E[maxn],W[maxn],d[maxn];
int T,n,m,des;
struct Edge
{
int to,next,w;
}e[maxn*maxn];
struct status
{
int d,p;
status(int d,int p):d(d),p(p) {}
bool operator < (const status &a) const {return d>a.d;}
};
void addedge(int u,int v)
{
e[tot].to=v;
e[tot].next=head[u];
head[u]=tot++;
}
void dijkstra(int s)
{
memset(vis,,sizeof(vis));
priority_queue<status> Q;
Q.push(status(,s));
for(int i=;i<=n;i++) d[i]=(i==s?W[s]:inf);
while(!Q.empty())
{
status x=Q.top();Q.pop();
int u=x.p;
if(vis[u]) continue;
for(int i=head[u];i!=-;i=e[i].next)
{
int v=e[i].to;
if(d[u]+W[v]<d[v])
{
d[v]=d[u]+W[v];
Q.push(status(d[v],v));
}
}
}
}
int main()
{
//freopen("in.txt","r",stdin);
scanf("%d",&T);
while(T--)
{
tot=;
memset(head,-,sizeof(head));
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d%d%d",&S[i],&E[i],&W[i]);
for(int i=;i<=n;i++)
for(int j=i+;j<=n;j++)
if(E[i]>=S[j]) addedge(i,j);
dijkstra();
for(int i=;i<=m;i++)
{
scanf("%d",&des);
if(d[des]!=inf) printf("%d\n",d[des]);
else printf("-1\n");
}
}
}

HDU 2851 (最短路)的更多相关文章

  1. ACM: HDU 2544 最短路-Dijkstra算法

    HDU 2544最短路 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descrip ...

  2. UESTC 30 &&HDU 2544最短路【Floyd求解裸题】

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  3. hdu 5521 最短路

    Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  4. HDU - 2544最短路 (dijkstra算法)

    HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...

  5. hdu - 2851 Lode Runner (最短路)

    http://acm.hdu.edu.cn/showproblem.php?pid=2851 首先有n层,每层的路径都有一个起点和终点和对应的危险值,如果某两层之间有交集,就能从这一层上到另外一层,不 ...

  6. hdu 2851(最短路)

    点击打开链接 竟然是最短路!!!! 藏的好深啊 /* 求从路1走到路i的最小危险值, 给出n条路的起点和终点,当i,j两路有重合的,我们使map[i][j]=v[j]: 把路当作最短路中的点,如果有重 ...

  7. HDU2112 HDU Today 最短路+字符串哈希

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  8. hdu 2544 最短路

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shi ...

  9. hdu 2544 最短路 Dijkstra

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目分析:比较简单的最短路算法应用.题目告知起点与终点的位置,以及各路口之间路径到达所需的时间, ...

随机推荐

  1. 数据结构和算法 – 7.散列和 Hashtable 类

    7.1.散列函数 散列是一种常见的存储数据的技术,按照这种方式可以非常迅速地插入和取回数据.散列所采用的数据结构被称为是散列表.尽管散列表提供了快速地插入.删除.以及取回数据的操作,但是诸如查找最大值 ...

  2. WPA: 4-Way Handshake failed - pre-shared key may be incorrect

    生成psk网址: https://www.wireshark.org/tools/wpa-psk.html 相关 bug: 重点 关注 : https://en.community.sonos.com ...

  3. DDD的思考

    概述 DDD领域驱动设计,它是对面向对象的的分析和设计(OOAD,Object Orient Analysis Design)的一个补充,对技术框架进行了分层规划,同时对每个类进行了策略和类型划分.领 ...

  4. 【叉积】【sdut 2508 图形密码】

    图形密码 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

  5. PHP商品秒杀计时实现(解决大流量方案)

    PHP商品秒杀功能我们多半以整点或时间点为例子,这样对于php来说处理不复杂,但有一个问题就是如果流量大要如何来处理,下面我们一起来看看解决办法. 要求要有小时分钟秒的实时倒计时的显示,用户端修改日期 ...

  6. PHPCMS V9 栏目列表调用文章点击量及评论数量方法

    很多朋友在用Phpcms做站时,具体需要在列表页.首页调用文章列表调用文章的点击量和评论排行,那么怎么才能做到在Phpcms v9首页.频道页.列表页.推荐位等页面获取文章浏览量和评论统计呢? 原因起 ...

  7. 笔记本电脑关闭小键盘(即打字按P出现星号键)

    开关方法:Fn + NumLk (联想电脑的NumLk 一般为F8,其他电脑自己在键盘找找罗)

  8. 用计算器计算“异或CRC”

    再计算器上输入以下数字,每输入一个数字,按一下“Xor”

  9. 高效jQuery的奥秘

    讨论jQuery和javascript性能的文章并不罕见.然而,本文我计划总结一些速度方面的技巧和我本人的一些建议,来提升你的jQuery和javascript代码.好的代码会带来速度的提升.快速渲染 ...

  10. HDU 5876 Sparse Graph BFS 最短路

    Sparse Graph Problem Description   In graph theory, the complement of a graph G is a graph H on the ...