[JZOJ 5818] 做运动
题意:带温度最短路。
思路:
我们将温度从小到大的将边加入,用并查集维护连通性。
如果一旦联通那么跑一遍\(spfa\)就可以得到答案。
复杂度\(O(m log m)\)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 1e6 + 10;
inline int read () {
int q=0,f=1;char ch = getchar();
while(!isdigit(ch)) {
if(ch=='-')f=-1;ch=getchar();
}
while(isdigit(ch)){
q=q*10+ch-'0';ch=getchar();
}
return q*f;
}
int n,m,S,T;
bool vis[maxn];
ll dis[maxn];
int f[maxn];
int ans;
int siz[maxn];
struct edge {
int u;
int v;
int w;
int t;
}e[maxn << 1];
queue<int>q;
inline bool cmp(edge x,edge y) {
return x.w < y.w;
}
int get(edge p,int k) {
if(k == p.u) return p.v;
return p.u;
}
inline int find (int x) {
return x == f[x] ? x : f[x] = find(f[x]);
}
vector<edge>v[maxn];
inline void spfa(int s) {
memset(dis,-1,sizeof(dis));
memset(vis,false,sizeof(vis));
dis[s] = 0;
vis[s] = 1;
q.push(s);
while(!q.empty()) {
int u = q.front();
q.pop();
vis[u] = 0;
for(int i = 0;i < v[u].size(); ++i) {
int y = get(v[u][i],u);
if(v[u][i].w > ans) continue;
if(dis[y] == -1 || dis[y] > dis[u] + (ll)v[u][i].w * v[u][i].t) {
dis[y] = dis[u] + (ll)v[u][i].w * v[u][i].t;
if(!vis[y]) {
q.push(y);
vis[y] = 1;
}
}
}
}
}
#define pb(x) push_back(x)
int main () {
freopen("running.in","r",stdin);
freopen("running.out","w",stdout);
n = read(),m = read();
for(int i = 1;i <= n; ++i) {
f[i] = i;
siz[i] = 1;
}
for(int i = 1;i <= m; ++i) {
e[i].u = read(),e[i].v = read(),e[i].w = read(),e[i].t = read();
v[e[i].u].pb(e[i]);
v[e[i].v].pb(e[i]);
}
S = read(),T = read();
sort(e + 1,e + m + 1,cmp);
for(int i = 1;i <= m; ++i) {
int x = e[i].u;
int y = e[i].v;
int l = find(x);
int r = find(y);
if(l != r) f[l] = r;
if(find(S) == find(T)) {
ans = e[i].w;
break;
}
}
spfa(S);
printf("%d %lld",ans,dis[T]);
return 0;
}
[JZOJ 5818] 做运动的更多相关文章
- JZOJ 5818. 【NOIP提高A组模拟2018.8.15】 做运动
5818. [NOIP提高A组模拟2018.8.15] 做运动 (File IO): input:running.in output:running.out Time Limits: 2000 ms ...
- [Solution] JZOJ-5818 做运动
[Solution] JZOJ-5818 做运动 Time Limits:2000ms Memory Limits:524288KB Description 一天,Y 君在测量体重的时候惊讶的发现,由 ...
- [JZOJ5818] 【NOIP提高A组模拟2018.8.15】 做运动
Description 一天,Y 君在测量体重的时候惊讶的发现,由于常年坐在电脑前认真学习,她的体重有了突 飞猛进的增长. 幸好 Y 君现在退役了,她有大量的时间来做运动,她决定每天从教学楼跑到食堂来 ...
- 刷题总结——做运动(NOIP模拟)
题目: 给定一个无向图,节点数n<=50000,m<=1000000,每条边有两个值t和c,边的长度为t*c···现在要求再t尽量小的情况下,求两节点st的最短距离 题解: 第一次做的时候 ...
- 做运动(Dijkstra+并查集+MST)
上面的题解是这样,这道题我真的脑残,其实打代码的时候就意识到了许多,可以用Dfs+Dij+二分,这样还可以卡一卡 但是我打了spfa+spfa+二分,这个显然很慢,类似的题目我好像还做过一道的,就是在 ...
- javascript运动系列第一篇——匀速运动
× 目录 [1]简单运动 [2]定时器管理 [3]分享到效果[4]移入移出[5]运动函数[6]透明度[7]多值[8]多物体[9]回调[10]函数完善[11]最终函数 前面的话 除了拖拽以外,运动也是j ...
- 运动规划 (Motion Planning): MoveIt! 与 OMPL
原创博文:转载请标明出处:http://www.cnblogs.com/zxouxuewei 最近有不少人询问有关MoveIt!与OMPL相关的话题,但是大部分问题都集中于XXX功能怎么实现,XXX错 ...
- js实现缓冲运动,和匀速运动有点不相同
缓冲运动和匀速运动有点不同,看图可以知道缓冲运动速度是越来越慢的. <style> *{ padding:0; margin:10px 0; } #div1{ height:100px; ...
- 运动历史图(MHI)——Motion History Image
MHI最初是由Bobick 和 Davis提出的,在此之前,Bobick 和 Davis 首先提出了二值的运动能量图(Motion Energy Image,MEI),通过描述物体如何移动和运动在空间 ...
随机推荐
- leetcode-163周赛-1260-二维网格迁移
题目描述: 自己的提交: class Solution: def shiftGrid(self, grid: List[List[int]], k: int) -> List[List[int] ...
- 函数计算工具链新成员 —— Fun Local 发布啦
刚刚,我们发布了函数计算工具链的新成员,Fun Local.欢迎大家使用! 如果你还不了解 Fun 是什么,我们来简单解释下. Fun 是什么 Fun 是 have Fun with Serverle ...
- 折半枚举——poj3977
暴力搜索超时,但是折半后两部分状态支持合并的情况,可用折半枚举算法 poj3977 给一个序列a[],从里面找到k个数,使其和的绝对值最小 经典折半枚举法+二分解决,对于前一半数开一个map,map[ ...
- css 导航样式
html 结构 <div class="nav-menu float-r"> <ul class="menu-item"> <l ...
- CSS:CSS 分组 和 嵌套 选择器
ylbtech-CSS:CSS 分组 和 嵌套 选择器 1.返回顶部 1. CSS 分组 和 嵌套 选择器 Grouping Selectors 在样式表中有很多具有相同样式的元素. h1 { col ...
- 提取json对象中的数据,转化为数组
var xx1 = ["乐谱中的调号为( )调", "写出a自然小调音阶.", "以G为冠音,构写增四.减五音程.", "调式分析 ...
- Java 反射获取私有方法
通常我们创建一个类时,它的私有方法在类外是不可见的,但是可以通过反射机制来获取调用.具体的反射机制的介绍大家自己百度. 所以反射可能会破坏我们的单例模式,当然解决方案也是有的,就是做个标记记录次数,第 ...
- 拾遗:Go 基础
这 Go,越看越像是 C 和 Python 的混合体--! gofmt 用于格式化代码,缩进使用 tab,而不是空格:Python 官方则建议使用空格,而不是 tab package Go 惯例,使用 ...
- 【node】---token的原理及使用---【alley】
一.登陆的验证流程 当用户请求登录的时候,如果没有问题,我们在服务端生成一条记录,这个记录里可以说明一下登录的用户是谁,然后把这条记录的 ID 号发送给客户端,客户端收到以后把这个 ID 号存储在 C ...
- 常用内置模块(三)——shelve、xml、hashlib、configparser
常用模块(三) 一.shelve模块 1.shelve模块也是一种序列化模块,内部使用的是pickle模块,所以也存在跨平台性差的问题 2.特点: 只要提供一个文件名即可 读写的方式和字典一样 将数据 ...