初涉A*剪枝
挖坑防忘,天亮补题解。
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <cmath>
#include <stack>
#include <map> #pragma comment(linker, "/STACK:1024000000");
#define EPS (1e-8)
#define LL long long
#define ULL unsigned long long LL
#define _LL __int64
#define _INF 0x3f3f3f3f
#define Mod 1000000007 using namespace std; const int MAXN = 100100; struct N
{
int u,v,w,next,ty;
}edge[2*MAXN]; int head[MAXN]; int Top; void Link(int u,int v,int w,int ty)
{
edge[Top].ty = ty;
edge[Top].v = v;
edge[Top].w = w;
edge[Top].next = head[u];
head[u] = Top++;
} int ans[1010]; int w[1010][1010]; int H[1010]; struct Q
{
int v,g,h,f;
bool operator < (const Q &a) const
{
return a.f < f;
}
}; void Init_H(int t)
{
Q s,f;
s.f = 0;
s.v = t; memset(H,-1,sizeof(H));
H[t] = 0; priority_queue<Q> q;
q.push(s); while(q.empty() == false)
{
f = q.top();
q.pop(); H[f.v] = (H[f.v] == -1 ? f.f : H[f.v]); for(int p = head[f.v]; p != -1; p = edge[p].next)
{
if(edge[p].ty == 2)
{
if(H[edge[p].v] == -1)
{
s.v = edge[p].v;
s.f = f.f + edge[p].w;
q.push(s);
}
}
}
}
} void bfs(int h,int e,int k)
{
Q f,s;
priority_queue<Q> q;
f.g = 0;
f.h = H[h];
f.f = f.h + f.g;
f.v = h; q.push(f); while(q.empty() == false)
{
f = q.top();
q.pop(); if(f.g != 0)
{
w[f.v][++ans[f.v]] = f.g; if(f.v == e && ans[f.v] == k)
return ;
} for(int p = head[f.v]; p != -1; p = edge[p].next)
{
if(edge[p].ty == 1)
{
s.v = edge[p].v;
s.h = H[edge[p].v];
s.g = f.g + edge[p].w;
s.f = s.h + s.g;
q.push(s);
}
} } } int main()
{ int n,m; int u,v,ww,i; while(scanf("%d %d",&n,&m) != EOF)
{
memset(head,-1,sizeof(head)); Top = 0; for(i = 0;i < m; ++i)
{
scanf("%d %d %d",&u,&v,&ww);
Link(u,v,ww,1);
Link(v,u,ww,2);
} int s,t,k; scanf("%d %d %d",&s,&t,&k); Init_H(t); memset(ans,0,sizeof(ans)); bfs(s,t,k); if(ans[t] < k)
{
printf("-1\n");
}
else
{
printf("%d\n",w[t][k]);
} }
return 0;
}
初涉A*剪枝的更多相关文章
- α-β剪枝算法的java语言实现(非常实用)
利用α-β剪枝算法,对下图所示的博弈树进行搜索,搜索得到根节点选择的走步,以及没有必要进行评估的节点,并求出给出在何处发生了剪枝,以及剪枝的类型(属于α剪枝还是β剪枝). 注:□表示MIN节点:○表示 ...
- Sicily 1153: 马的周游问题(DFS+剪枝)
这道题没有找到一条回路,所以不能跟1152一样用数组储存后输出.我采用的方法是DFS加剪枝,直接DFS搜索会超时,优化的方法是在搜索是优先走出度小的路径,比如move1和move2都可以走,但是如走了 ...
- HDU5887 Herbs Gathering(2016青岛网络赛 搜索 剪枝)
背包问题,由于数据大不容易dp,改为剪枝,先按性价比排序,若剩下的背包空间都以最高性价比选时不会比已找到的最优解更好时则剪枝,即 if(val + (LD)pk[d].val / (LD)pk[d]. ...
- HDU5937 Equation(DFS + 剪枝)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5937 Description Little Ruins is a studious boy, ...
- alpha-beta剪枝搜索
•一种基于剪枝( α-βcut-off)的深度优先搜索(depth-first search). •将走棋方定为MAX方,因为它选择着法时总是对其子节点的评估值取极大值,即选择对自己最为有利的着法: ...
- POJ1190生日蛋糕[DFS 剪枝]
生日蛋糕 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18236 Accepted: 6497 Description ...
- *HDU1455 DFS剪枝
Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU1010 DFS+剪枝
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- HDU 5113 dfs剪枝
题意:告诉格子规格,颜色个数,以及每个颜色能涂得格子数目,问是否能够实现相邻两个格子的颜色数目不相同. 分析:因为数据很小,格子最多是5 * 5大小的,因此可以dfs.TLE了一次之后开始剪枝,31m ...
随机推荐
- KXFW界面库
如果你看到这里,觉得这个UI库不错,那请你一定要记住如下这些话.这个开源已经有更好的替代者,那就是QML,无法否认QML会有一些性能或BUG的问题,但也无法否定它的实现机制是非常棒的,你完全可以利用它 ...
- Spring cloud项目实践(一)
链接地址:http://sail-y.github.io/2016/03/21/Spring-cloud%E9%A1%B9%E7%9B%AE%E5%AE%9E%E8%B7%B5/ 什么是Spring ...
- 在运行时切换 WinForm 程序的界面语言 ---------多语言设置基础
System.ComponentModel.ComponentResourceManager .ApplyResources 时间:2015-06-17 14:59:06 阅读:473 ...
- 【HDOJ】4455 Substrings
5000ms的时限,还挺长的.算法是DP.思路是找到ans[1..n]的结果,然后Query就容易做了.问题是怎么DP?考虑:1 1 2 3 4 4 5w=1: 7, 7 = 1 * 7w=2: 10 ...
- WCF - Versus Web Service
There are some major differences that exist between WCF and a Web service which are listed below. 这里 ...
- 基于SXSSF (Streaming Usermodel API)的写文件
在POI3.8中SXSSF仅仅支持excel2007格式是对XSSF的一种流的扩展.目的在生成excel时候,需要生成大量的数据的时候,通过刷新的方式将excel内存信息刷新到硬盘的方式,提供写入数据 ...
- poj2187
求最远点对,这是一道经典的旋转卡壳的题目话说由于是前年写的,之后就没怎么研究过计算几何了……感觉都不大记得清了,来稍微回忆一下……首先最远点对一定出现在凸包上显然,然后穷举肯定不行,这时候就需要旋转卡 ...
- bzoj1296
首先先预处理每行刷1~m次最多能正确涂出多少格 然后把每行涂色看做一个物品,当重量为j(这行涂了j次),价值为对应能正确涂出的格子数: 总重量为k,然后做分组背包即可 ..,..,..] of lon ...
- BrnShop开源网上商城第三讲:插件的工作机制
这几天BrnShop的开发工作比较多,所以这一篇文章来的晚了一些,还请大家见谅呀!还有通知大家一下BrnShop1.0.312版本已经发布,此版本添加了报表统计等新功能,需要源码的园友可以点此下载.好 ...
- HDU 4746 Mophues 莫比乌斯反演
分析: http://blog.csdn.net/acdreamers/article/details/12871643 分析参见这一篇 http://wenku.baidu.com/view/fbe ...