KIDx 的解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2962
题意:找能够到达终点的最大高度下的最短路
这样的效率排第七,,中规中矩吧,用的是前插链接表的spfa实现,当然我还开了输入外挂,此代码中木有加外挂
#include <iostream>
#include <queue>
using namespace std;
#define inf 0x3fffffff
#define M 1005
struct edge{
int v, w, h, next;
}e[2000005];
int pre[M], cnt, dist[M], n;
bool inq[M];
void init ()
{
cnt = 0;
memset (pre, -1, sizeof(pre));
}
void addedge (int u, int v, int w, int h) //慢慢模拟就会明白的
{
e[cnt].v = v;
e[cnt].w = w;
e[cnt].h = h;
e[cnt].next = pre[u]; //接替已有边
pre[u] = cnt++; //自己成为u派生的第一条边
}
void spfa (int u, int lim)
{
int v, w, i;
for (i = 1; i <= n; i++)
dist[i] = inf, inq[i] = false;
dist[u] = 0;
queue<int> q;
q.push (u);
inq[u] = true;
while (!q.empty())
{
u = q.front();
q.pop();
inq[u] = false;
for (i = pre[u]; i != -1; i = e[i].next)
{
if (e[i].h < lim) continue;
w = e[i].w;
v = e[i].v;
if (dist[u] + w < dist[v])
{
dist[v] = dist[u] + w;
if (!inq[v])
{
q.push (v);
inq[v] = true;
}
}
}
}
}
int main()
{
int m, u, v, w, h, l, r, mid, cc = 1, res;
while (scanf ("%d%d", &n, &m), (n||m))
{
if (cc > 1) printf ("\n");
init();
while (m--)
{
scanf ("%d%d%d%d", &u, &v, &h, &w);
if (h == -1) h = inf;
addedge (u, v, w, h);
addedge (v, u, w, h); //双向前插加边
}
scanf ("%d%d%d", &u, &v, &h);
l = 0, r = h, res = inf;
while (l < r) //简单二分枚举高度,使高度尽量大
{
mid = (l+r+1) >> 1;
spfa (u, mid);
if (dist[v] != inf)
l = mid, res = dist[v];
else r = mid - 1;
}
printf ("Case %d:\n", cc++);
if (res != inf)
printf ("maximum height = %d\nlength of shortest route = %d\n", l, res);
else puts ("cannot reach destination");
}
return 0;
}
- 大小: 35.1 KB
分享到:
相关推荐
acm入门之枚举搜索,学校第一次acm培训,包括枚举及其优化,dfs和bfs
最短路(HDU-2544).rar
ACM题库,一些题目和答案,以及解题报告,传上来共享
2012-06-11 15:20 42,528 c#仿QQ好友界面.rar 2012-06-11 15:22 216,281 ChineseChessV1.rar 2012-06-11 15:39 7,113,300 CS仿真程序.zip 2012-06-11 15:48 88,895 C与FORTRAN共舞.TXT 2012-06-11 15:30 122,880 ...
教程来自HDU 的ACM教案,非常好的一个资料
教程来自HDU 的ACM教案,非常好的一个资料
最精准的答案(本人做对的题目拿上来给大家呈现)!不要忘记是C++编的
ACM HDU 2000->2099 解题报告 ACM HDU 2000->2099 解题报告 ACM HDU 2000->2099 解题报告
杭电OnlineJudge 200-2099的解题报告
可拆卸核心板滤波电容电源指示灯排针复位F103--R10不焊F207--R9不焊第19引脚F103--C4焊0欧姆,C3不焊Tuesday, August 31
排母,核心板接口ADC 电位器扩展接口,预留模拟量Tuesday, August 31, 2021Tuesday, August 31, 2021Tuesday
HDU的1250,主要是利用高精度加法,但是代码有点繁琐,效率不是很高
hdu-acm源代码(上百题)hdu-acm源代码、hdu-acm源代码hdu-acm源代码
Topic1 图论 1. HDU 1548 --- basic bfs 2. BNU 1440 --- basic dfs 3. POJ 1190 --- dfs + pruning(Strong) 4. UVALive 2243 --- dfs 5. FZU 2196 --- double bfs 6. PKU 1426 --- bfs + pruning 7. BNU 1038 --- ...
从第 1 秒开始,每 一秒最 开始 时,每个数据服务器都会检查它是否收到了主服务器的回复信息(包括新发出信息的回复信息):如果还没收到任何回复信息,那么该服务器
HDU 里面的2000~2099道题目的源码。谢谢支持
第一章 功能简介本章介绍HDU-EID-V2开发板的功能,使大家对该开发板的功能及特点有个基本了解。1. 处理器( MCU)HDU-EID-V2 开发板的处理器