BZOJ 1975: [Sdoi2010]魔法猪学院 大水题 第k短路 spfa
https://www.lydsy.com/JudgeOnline/problem.php?id=1975
我好像到现在了第k短路都不会写,mdzz。
先spfa求出最短路,然后扫点存各种前置路径已经决定的最短路,小根堆暴力即可。
有向图要存反向边,写完才发现的,临时添成两种了,丑也没办法
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
#define pa pair<double,int>
const int maxn=;
const double inf=1e17;
int n,m;double ene;
struct nod{
int y,next;double v;
}e[][maxn*];
int head[][maxn]={},tot[]={};
double dis[maxn]={};
bool vis[maxn]={};
queue<int>q;
priority_queue< pa , vector< pa > , greater< pa > >q1;
void init(int x,int y,double v,int op){
e[op][++tot[op]].v=v;e[op][tot[op]].y=y;e[op][tot[op]].next=head[op][x];head[op][x]=tot[op];
}
void spfa(){
for(int i=;i<=n;i++)dis[i]=inf;
dis[n]=;vis[n]=;q.push(n);
int x,y;double v;
while(!q.empty()){
x=q.front();q.pop();
for(int i=head[][x];i;i=e[][i].next){
y=e[][i].y;v=e[][i].v;
//cout<<x<<y<<v<<dis[y]<<endl;
if(dis[y]>dis[x]+v){
dis[y]=dis[x]+v;
if(!vis[y]){
vis[y]=;
q.push(y);
}
}
}vis[x]=;
}
}
int getit(){
q1.push(make_pair(dis[],));
int ans=;double vq,v;int x;
while(!q1.empty()){
x=q1.top().second; v=q1.top().first; q1.pop();
vq=v-dis[x];
if(x==n){
if(ene-v>=){ene-=v;ans++;}
else break;
}
for(int i=head[][x];i;i=e[][i].next){
q1.push(make_pair(vq+e[][i].v+dis[e[][i].y],e[][i].y));
}
}
return ans;
}
int main(){
scanf("%d%d%lf",&n,&m,&ene);
int x,y;double v;
for(int i=;i<=m;i++){scanf("%d%d%lf",&x,&y,&v);init(x,y,v,);init(y,x,v,);}
spfa();
printf("%d\n",getit());
return ;
}
BZOJ 1975: [Sdoi2010]魔法猪学院 大水题 第k短路 spfa的更多相关文章
- Bzoj 1975: [Sdoi2010]魔法猪学院 dijkstra,堆,A*,K短路
1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1357 Solved: 446[Submit][Statu ...
- bzoj 1975: [Sdoi2010]魔法猪学院 [k短路]
1975: [Sdoi2010]魔法猪学院 裸题... 被double坑死了 #include <iostream> #include <cstdio> #include &l ...
- bzoj 1975 [Sdoi2010]魔法猪学院
1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1758 Solved: 557[Submit][Statu ...
- 洛谷 P2483 BZOJ 1975 [SDOI2010]魔法猪学院
题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...
- bzoj 1975 [Sdoi2010]魔法猪学院(k短路)
题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...
- BZOJ 1975: [Sdoi2010]魔法猪学院——K短路,A*
传送门 http://www.lydsy.com/JudgeOnline/problem.php?id=1975 题意&简要做法 一张有向图,求出最多的互不相同的路径,满足路径长度之和\(\l ...
- BZOJ 1975 SDOI2010 魔法猪学院 A*k短路
题目大意:给定一个值E 求起点到终点的最多条路径 使长度之和不超过E k短路的A*算法--每一个点有一个估价函数=g[x]+h[x] 当中g[x]是从源点出发已经走了的长度 h[x]是从这个点到汇点的 ...
- [SDOI2010]魔法猪学院(A*,最短路)
[SDOI2010]魔法猪学院(luogu) Description 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig ...
- 【BZOJ】1975: [Sdoi2010]魔法猪学院
题意 \(n(2 \le n \le 5000)\)个点,找尽量多的不同\(1\)到\(n\)的路径,每一次的花费就是路径的全值和,要求在费用不超过\(E\)的情况下路径最多. 分析 裸的最段路. 题 ...
随机推荐
- HTML5之2D物理引擎 Box2D for javascript Games 系列 第一部分
我要的是能在H5页面上跑的javascript版的Box2D啊!!! 最近想学习Javascript版本的Box2D JS物理引擎,无奈搜了半天也没找到相对比较系统的资料 官方网站也只是简单的介绍,A ...
- 与JavaWeb有关的故事(Web请求与Java IO)
作为一名后端屌丝程序员,对算法.并发.性能乐此不疲.但是,随着年龄和阅历的增加,显然叶落而不知秋的心态是不太能混了.尤其是,某T面试官在明知我是后端,且明确表示对HTTP协议不太熟的情况下,强行让我解 ...
- redis安装(linux)
一.redis安装步骤 1.yum install gcc 如果你机器已经安装了编译环境请忽略,否则在使用make编译源码时会报错. 报错信息:make: *** [adlist.o] 2.使用w ...
- MySQL异步复制、半同步复制详解
MySQL数据复制的原理图大致如下: 从上图我们可以看出MySQL数据库的复制需要启动三个线程来实现: 其中1个在主服务器上,另两个在从服务器上.当发出START SLAVE时,从服务器创建一个I/O ...
- 读书笔记 effective C++ Item 33 避免隐藏继承而来的名字
1. 普通作用域中的隐藏 名字实际上和继承没有关系.有关系的是作用域.我们都知道像下面的代码: int x; // global variable void someFunc() { double x ...
- React-Native 之 FlexBox介绍和使用
# 前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会 ...
- 07 go语言
Home Alexey Palazhchenko edited this page on 9 Jul · 89 revisions Welcome to the Go wiki, a collec ...
- JS调用百度地图API标记地点
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Selenium_多线程执行测试用例
多线程执行测试用例 这里以百度搜索为例,通过不同的浏览器来启动不同的线程. #!/usr/bin/env python # _*_ coding:utf-8 _*_ __author__ = 'Yin ...
- Centos7.3安装和配置jre1.8
在正式环境里 我们可以不安装jdk ,仅仅安装Java运行环境 jre即可: 第一步:下载jre 我们去oracle官方下载下jre http://www.oracle.com/technetwork ...