【BZOJ 1598】 牛跑步
【题目链接】
https://www.lydsy.com/JudgeOnline/problem.php?id=1598
【算法】
A*求k短路
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 1010
#define MAXM 10010
const int INF = 2e9; int i,n,m,k,tot,rtot,u,v,w;
int head[MAXN],rhead[MAXN],dist[MAXN]; struct Edge
{
int to,w,nxt;
} e[MAXM<<];
struct info
{
int s,d;
friend bool operator < (info a,info b)
{
return a.d + dist[a.s] > b.d + dist[b.s];
}
}; inline void add(int u,int v,int w)
{
tot++;
e[tot] = (Edge){v,w,head[u]};
head[u] = tot;
tot++;
e[tot] = (Edge){u,w,rhead[v]};
rhead[v] = tot;
}
inline void dijkstra(int s)
{
int i,u,v,w;
static bool visited[MAXN];
priority_queue< pair<int,int> > q;
while (!q.empty()) q.pop();
memset(visited,false,sizeof(visited));
for (i = ; i <= n; i++) dist[i] = INF;
dist[s] = ;
q.push(make_pair(,s));
while (!q.empty())
{
u = q.top().second;
q.pop();
if (visited[u]) continue;
visited[u] = true;
for (i = rhead[u]; i; i = e[i].nxt)
{
v = e[i].to;
w = e[i].w;
if (dist[u] + w < dist[v])
{
dist[v] = dist[u] + w;
q.push(make_pair(-dist[v],v));
}
}
}
}
inline void Astar(int s,int t)
{
int i,v,w,cnt = ;
priority_queue< info > q;
info cur;
while (!q.empty()) q.pop();
q.push((info){s,});
while (!q.empty())
{
cur = q.top();
q.pop();
if (cur.s == t)
{
cnt++;
if (cnt <= k) printf("%d\n",cur.d);
else break;
}
for (i = head[cur.s]; i; i = e[i].nxt)
{
v = e[i].to;
w = e[i].w;
q.push((info){v,cur.d+w});
}
}
for (i = ; i <= k - cnt; i++) printf("-1\n");
} int main()
{ scanf("%d%d%d",&n,&m,&k);
for (i = ; i <= m; i++)
{
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
}
dijkstra();
Astar(n,); return ; }
【BZOJ 1598】 牛跑步的更多相关文章
- BZOJ 1598 牛跑步
		
牛跑步 [问题描述] BESSIE准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘, 然后走回牛棚. BESSIE也不想跑得太远,所以她想走最短的路经. 农场上一共有M ...
 - 【BZOJ】1598: [Usaco2008 Mar]牛跑步
		
[题意]给定有向图,边严格从大编号指向小编号,求前k短路.n<=1000,m<=10000,k<=100. [算法]归并+拓扑排序||A*求第k短路 [题解]因为此题自带拓扑序的特殊 ...
 - Bzoj 1598: [Usaco2008 Mar]牛跑步  dijkstra,堆,K短路,A*
		
1598: [Usaco2008 Mar]牛跑步 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 427 Solved: 246[Submit][St ...
 - bzoj 1598: [Usaco2008 Mar]牛跑步 [k短路 A*] [学习笔记]
		
1598: [Usaco2008 Mar]牛跑步 题意:k短路 ~~貌似A*的题目除了x数码就是k短路~~ \[ f(x) = g(x) + h(x) \] \(g(x)\)为到达当前状态实际代价,\ ...
 - bzoj 1598: [Usaco2008 Mar]牛跑步  -- 第k短路,A*
		
1598: [Usaco2008 Mar]牛跑步 Time Limit: 10 Sec Memory Limit: 162 MB Description BESSIE准备用从牛棚跑到池塘的方法来锻炼 ...
 - K短路 (A*算法) [Usaco2008 Mar]牛跑步&[Sdoi2010]魔法猪学院
		
A*属于搜索的一种,启发式搜索,即:每次搜索时加一个估价函数 这个算法可以用来解决K短路问题,常用的估价函数是:已经走过的距离+期望上最短的距离 通常和Dijkstra一起解决K短路 BZOJ1598 ...
 - BZOJ1598: [Usaco2008 Mar]牛跑步
		
传送门 K短路,普遍的算法是采用AStar求解,先建立反向边跑一遍dij,或者spfa什么的.跑出反向边的距离就可以看为估价函数中的$h()$.设$dist$为当前已经走过的距离,那么$f(node) ...
 - BZOJ_1598_[Usaco2008 Mar]牛跑步_A*
		
BZOJ_1598_[Usaco2008 Mar]牛跑步_A* Description BESSIE准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘, 然后走回牛棚. B ...
 - 【BZOJ1598】牛跑步 [A*搜索]
		
牛跑步 Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description BESSIE准备用从牛棚跑到池塘的方 ...
 - [bzoj1598][Usaco08Mar]牛跑步_A*_Dijkstra
		
牛跑步 bzoj-1598 题目大意:给你n个点,m条边的有向图.求从1到n的严格的第k短路. 注释:$1\le n\le 1000$,$1\le m \le 10,000$,$1\le k \le ...
 
随机推荐
- .net 大数据量,查找Where优化(List的Contains与Dictionary的ContainsKey的比较)
			
最近优化一个where查询条件,查询时间很慢,改为用Dictionary就很快了. 一.样例 假设:listPicsTemp 有100w条数据,pictures有1000w条数据. 使用第1段代码执 ...
 - html5——全屏滚动
			
鼠标滚轮 window.onmousewheel=function(){}; 基本描述 1.我们使用插件fullpage,为了更好的兼容性 2.动画效果是在滚动到这一屏时触发的,此时给当前屏幕加cur ...
 - SSH整合框架+mysql简单的实现
			
SSH整合框架+mysql简单的实现 1. 框架整合原理: struts2整合Spring 两种: 一种struts2自己创建Action,自动装配Service : 一种 将Action交给Spri ...
 - 【译】x86程序员手册03 - 2.1内存组织和分段
			
2.1 Memory Organization and Segmentation 内存组织和分段 The physical memory of an 80386 system is organized ...
 - JAVA趣味逻辑算法
			
/**已知4位同学中的一位数学考了100分,当小李询问这4位是谁考了100分时,4个人的回答如下: A说:不是我. B说:是C C说:是D. D说:他胡说. 已知三个人说的是真话,一个人说的是假话.现 ...
 - Requirejs常用配置和应用
			
requirejs.require方法冲突 如果加载了多个requirejs脚本,每个requirejs会判断是否浏览器已经实现了require和define方法.如果浏览器已经自带require和d ...
 - NFS指定端口,NFS缓存(转载)
			
nfs服务端: #编辑/etc/nfsmount.conf,在末尾添加: #RQUOTAD_PORT=30001#LOCKD_TCPPORT=30002#LOCKD_UDPPORT=30002#MOU ...
 - 简述prototype, _proto_, constructor三者的关系
			
1.prototype 感概:每个函数都有一个prototype这个属性,而这个属性指向一个对象,这个对象称为原型对象 作用: a.节约内存 b.扩展属性和方法 c.实现类与类的之间的继承 2._pr ...
 - html 报告页面 v1.2 批量数据生成表格
			
html 报告页面 v1.2 批量数据生成表格 上代码: <!DOCTYPE html> <html lang="en"> <head> < ...
 - react  父组件调用子组件方法
			
import React from 'react'import '../page1/header.css'import { Table } from 'antd'import Child from ' ...