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 货车运输的更多相关文章

  1. NOIP 2013 货车运输【Kruskal + 树链剖分 + 线段树 】【倍增】

    NOIP 2013 货车运输[树链剖分] 树链剖分 题目描述 Description A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在 ...

  2. NOIP2013 货车运输 (最大生成树+树上倍增LCA)

    死磕一道题,中间发现倍增还是掌握的不熟 ,而且深刻理解:SB错误毁一生,憋了近2个小时才调对,不过还好一遍AC省了更多的事,不然我一定会疯掉的... 3287 货车运输 2013年NOIP全国联赛提高 ...

  3. C++之路进阶——codevs3287(货车运输)

    3287 货车运输 2013年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description A 国有 n ...

  4. NOIP2013 货车运输

    3.货车运输 (truck.cpp/c/pas) [问题描述] A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货 ...

  5. Codevs 3287 货车运输 2013年NOIP全国联赛提高组(带权LCA+并查集+最大生成树)

    3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description A 国有 n 座 ...

  6. 【NOIP2013提高组】货车运输

    货车运输  (truck.cpp/c/pas) [问题描述]  A国有n座城市,编号从1到n,城市之间有m条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有q辆货车在运输货物,司机们想知道每辆 ...

  7. Codevs3278[NOIP2013]货车运输

    3287 货车运输 2013年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond      题目描述 Description A 国有 ...

  8. 洛谷 P1967 货车运输

    洛谷 P1967 货车运输 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在 ...

  9. P1967 货车运输

    P1967 货车运输最大生成树+lca+并查集 #include<iostream> #include<cstdio> #include<queue> #inclu ...

随机推荐

  1. PHP扩展模块redis安装

    PHP扩展redis模块安装 当我们安装好php之后可能会忘记装一些模块,或者需要增加模块的时候我们可以使用扩展模块安装. 查看php加载了哪些模块,使用命令 /usr/local/php/bin/p ...

  2. java动态代理的基本思想以及简单的实现

    代理模式 本人参考于代理模式及Java实现动态代理  不作为商业用途,只是借鉴于其思路.侵权即删. 原理:给某个对象提供一个代理对象,并且由代理对象控制原对象的访问,即不直接操控原对象,而是通过代理对 ...

  3. ASP.NET Core Middleware (转载)

    What is Middleware? Put simply, you use middleware components to compose the functionality of your A ...

  4. ORACLE逐行累计求和方法(OVER函数)

    1.RANK ( ) OVER ( [QUERY_PARTITION_CLAUSE] ORDER_BY_CLAUSE ) DENSE_RANK ( ) OVER ( [QUERY_PARTITION_ ...

  5. activeMQ的高级特性:嵌入activemq

    activemq的高级特性之嵌入式activemq 1:编写activeMQ服务 import org.apache.activemq.broker.BrokerService; import org ...

  6. eclipse 配置

    访问地址        https://www.eclipse.org/ . . . 配置工作目录:存放1.项目代码    2.IDE相关配置信息 //修改编码时的字体 //修改编码格式 没有配置to ...

  7. JVM,JMM,虚拟机栈,本地方法栈

    JVM 虚拟机栈 本地方法栈:本地方法(使用native关键词修饰的方法,是由JVM底层用C,C++实现的),运行这部份代码使用的栈就是本地方法栈

  8. DMZ靶场渗透

    0x00 目标站点www.test.ichunqiu 0x01 尝试登陆系统 -尝试弱密码登陆 结果:forbidden!!! -尝试万能账号密码登陆 1‘ or 1=1--+ 和 1‘ or 1=1 ...

  9. Altiun designer问题汇总(不断更新)

    (1)元件库-引脚名称被矩形方框遮住 该问题可能是因为设置中文版而产生的错误,可以尝试在旁边再摆一个矩形,并且摆上引脚观察是否会被隐藏.如果还存在该现象,先将版本语言改为原版(英文版),再重新绘制即可

  10. 2018年数学建模国赛B题 智能RGV的动态调度策略

    第一种情况大致思路: 每秒判断各个CNC的状态,若工作完成或者是出于空闲状态下则向RGV发出一个请求.同时,RGV每秒判断自己的状态(上下料.移动.闲置.清洗等),如果是处于闲置状态,则启用调度算法, ...