cogs1439 货车运输
cogs1439 货车运输
一道傻逼板子题。
边一定在最大生成树上,这个可以用消圈证明
然后kruskal跑一遍再搜一遍再建ST表再跑LCA这题就做完了。
RT
PS.交上去的代码把Kruskal打成了Kruscal(=v=)
COGS上莫名RE两个小点,别的OJ都能AC(今天竟然一次AC了,我的欧!)
// It is made by XZZ
#include<cstdio>
#include<algorithm>
#include<cmath>
#define Fname "truck"
using namespace std;
#define rep(a,b,c) for(rg int a=b;a<=c;a++)
#define drep(a,b,c) for(rg int a=b;a>=c;a--)
#define erep(a,b) for(rg int a=fir[b];a;a=nxt[a])
#define il inline
#define rg register
#define vd void
typedef long long ll;
il int gi(){
rg int x=0;rg bool flg=0;rg char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')flg=1;ch=getchar();}
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return flg?-x:x;
}
const int maxn=10010,maxm=50010;
int n,m;
int fa[maxn];
int fir[maxn],dis[maxn<<1],id,nxt[maxn<<1],w[maxn<<1];
il vd add(int a,int b,int c){nxt[++id]=fir[a],fir[a]=id,dis[id]=b,w[id]=c;}
il int hd(int i){return fa[i]==i?i:fa[i]=hd(fa[i]);}
namespace Kruscal{
struct edge{int a,b,c;};
il bool cmp(edge a,edge b){return a.c>b.c;}
edge e[maxm];
il vd main(){
rep(i,1,m)e[i].a=gi(),e[i].b=gi(),e[i].c=gi();
int now=1;
sort(e+1,e+m+1,cmp);
rep(i,1,n)fa[i]=i;
rep(i,2,n){
while(now<=m&&hd(e[now].a)==hd(e[now].b))++now;
if(now>m)return;
fa[hd(e[now].a)]=hd(e[now].b),add(e[now].a,e[now].b,e[now].c),add(e[now].b,e[now].a,e[now].c);
}
}
}
int st[maxn][14],Min[maxn][14],dep[maxn];
il vd dfs(int x){erep(i,x)if(st[x][0]^dis[i])st[dis[i]][0]=x,dep[dis[i]]=dep[x]+1,Min[dis[i]][0]=w[i],dfs(dis[i]);}
int main(){
freopen(Fname".in","r",stdin);
freopen(Fname".out","w",stdout);
n=gi(),m=gi();int Log=log2(n);
Kruscal::main();
rep(i,1,n)if(!st[i][0])st[i][0]=-1,dep[i]=1,dfs(i);
rep(i,1,Log)rep(j,1,n)st[j][i]=st[st[j][i-1]][i-1],Min[j][i]=min(Min[j][i-1],Min[st[j][i-1]][i-1]);
int q=gi();
while(q--){
static int x,y;x=gi(),y=gi();
if(hd(x)^hd(y)){puts("-1");continue;}
static int ans,cha;ans=2147483647;
cha=dep[x]-dep[y];
if(cha<0)swap(x,y),cha=-cha;
rep(i,0,Log)if(cha&(1<<i))ans=min(ans,Min[x][i]),x=st[x][i];
if(x^y)drep(i,Log,0)if(st[x][i]^st[y][i])ans=min(ans,min(Min[x][i],Min[y][i])),x=st[x][i],y=st[y][i];
if(x^y)ans=min(ans,min(Min[x][0],Min[y][0]));
printf("%d\n",ans);
}
return 0;
}
cogs1439 货车运输的更多相关文章
- NOIP 2013 货车运输【Kruskal + 树链剖分 + 线段树 】【倍增】
NOIP 2013 货车运输[树链剖分] 树链剖分 题目描述 Description A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在 ...
- NOIP2013 货车运输 (最大生成树+树上倍增LCA)
死磕一道题,中间发现倍增还是掌握的不熟 ,而且深刻理解:SB错误毁一生,憋了近2个小时才调对,不过还好一遍AC省了更多的事,不然我一定会疯掉的... 3287 货车运输 2013年NOIP全国联赛提高 ...
- C++之路进阶——codevs3287(货车运输)
3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description A 国有 n ...
- NOIP2013 货车运输
3.货车运输 (truck.cpp/c/pas) [问题描述] A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货 ...
- Codevs 3287 货车运输 2013年NOIP全国联赛提高组(带权LCA+并查集+最大生成树)
3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description A 国有 n 座 ...
- 【NOIP2013提高组】货车运输
货车运输 (truck.cpp/c/pas) [问题描述] A国有n座城市,编号从1到n,城市之间有m条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有q辆货车在运输货物,司机们想知道每辆 ...
- Codevs3278[NOIP2013]货车运输
3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description A 国有 ...
- 洛谷 P1967 货车运输
洛谷 P1967 货车运输 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在 ...
- P1967 货车运输
P1967 货车运输最大生成树+lca+并查集 #include<iostream> #include<cstdio> #include<queue> #inclu ...
随机推荐
- PHP扩展模块redis安装
PHP扩展redis模块安装 当我们安装好php之后可能会忘记装一些模块,或者需要增加模块的时候我们可以使用扩展模块安装. 查看php加载了哪些模块,使用命令 /usr/local/php/bin/p ...
- java动态代理的基本思想以及简单的实现
代理模式 本人参考于代理模式及Java实现动态代理 不作为商业用途,只是借鉴于其思路.侵权即删. 原理:给某个对象提供一个代理对象,并且由代理对象控制原对象的访问,即不直接操控原对象,而是通过代理对 ...
- ASP.NET Core Middleware (转载)
What is Middleware? Put simply, you use middleware components to compose the functionality of your A ...
- ORACLE逐行累计求和方法(OVER函数)
1.RANK ( ) OVER ( [QUERY_PARTITION_CLAUSE] ORDER_BY_CLAUSE ) DENSE_RANK ( ) OVER ( [QUERY_PARTITION_ ...
- activeMQ的高级特性:嵌入activemq
activemq的高级特性之嵌入式activemq 1:编写activeMQ服务 import org.apache.activemq.broker.BrokerService; import org ...
- eclipse 配置
访问地址 https://www.eclipse.org/ . . . 配置工作目录:存放1.项目代码 2.IDE相关配置信息 //修改编码时的字体 //修改编码格式 没有配置to ...
- JVM,JMM,虚拟机栈,本地方法栈
JVM 虚拟机栈 本地方法栈:本地方法(使用native关键词修饰的方法,是由JVM底层用C,C++实现的),运行这部份代码使用的栈就是本地方法栈
- DMZ靶场渗透
0x00 目标站点www.test.ichunqiu 0x01 尝试登陆系统 -尝试弱密码登陆 结果:forbidden!!! -尝试万能账号密码登陆 1‘ or 1=1--+ 和 1‘ or 1=1 ...
- Altiun designer问题汇总(不断更新)
(1)元件库-引脚名称被矩形方框遮住 该问题可能是因为设置中文版而产生的错误,可以尝试在旁边再摆一个矩形,并且摆上引脚观察是否会被隐藏.如果还存在该现象,先将版本语言改为原版(英文版),再重新绘制即可
- 2018年数学建模国赛B题 智能RGV的动态调度策略
第一种情况大致思路: 每秒判断各个CNC的状态,若工作完成或者是出于空闲状态下则向RGV发出一个请求.同时,RGV每秒判断自己的状态(上下料.移动.闲置.清洗等),如果是处于闲置状态,则启用调度算法, ...