/*
写了个傻逼二分套二分,真的傻逼了,我这tmd是在贪心呐,70分满满的人品
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define maxn 50010
using namespace std;
int head[maxn],num,n,m,mx1,mx2,mid1,mid2,ans=0x7fffffff;
bool vis[maxn],ok[];
struct node{int to,pre,v1,v2;}e[];
struct Node{int from,to,v1,v2;}edge[];
void Insert(int from,int to,int v1,int v2){
e[++num].to=to;
e[num].v1=v1;
e[num].v2=v2;
e[num].pre=head[from];
head[from]=num;
}
void bfs(){
queue<int>q;
q.push();vis[]=;
while(!q.empty()){
int now=q.front();q.pop();
for(int i=head[now];i;i=e[i].pre){
int to=e[i].to;
if(!vis[to]){vis[to]=;q.push(to);}
}
}
}
bool check1(){
memset(vis,,sizeof(vis));
memset(ok,,sizeof(ok));
memset(head,,sizeof(head));num=;
for(int i=;i<=m;i++){
if(edge[i].v1>mid1)continue;
Insert(edge[i].from,edge[i].to,edge[i].v1,edge[i].v2);
Insert(edge[i].to,edge[i].from,edge[i].v1,edge[i].v2);
ok[i]=;
}
bfs();
return vis[n];
}
bool check2(){
memset(vis,,sizeof(vis));
memset(head,,sizeof(head));num=;
for(int i=;i<=m;i++){
if((edge[i].v2>mid2)||(!ok[i]))continue;
Insert(edge[i].from,edge[i].to,edge[i].v1,edge[i].v2);
Insert(edge[i].to,edge[i].from,edge[i].v1,edge[i].v2);
}
bfs();
return vis[n];
}
int main(){
freopen("magicalforest11.in","r",stdin);//freopen("magicalforest.out","w",stdout);
scanf("%d%d",&n,&m);
int x,y,z,c;
for(int i=;i<=m;i++){
scanf("%d%d%d%d",&x,&y,&z,&c);
edge[i].from=x;edge[i].to=y;edge[i].v1=z;edge[i].v2=c;
Insert(x,y,z,c);Insert(y,x,z,c);
mx1=max(mx1,z);
mx2=max(mx2,c);
}
bfs();
if(!vis[n]){puts("-1");return ;}
int l1=,r1=mx1;
while(l1<=r1){
mid1=(l1+r1)>>;
if(check1()){
int l2=,r2=mx2;
while(l2<=r2){
mid2=(l2+r2)>>;
if(check2())r2=mid2-,ans=min(ans,mid1+mid2);
else l2=mid2+;
}
r1=mid1-;
}
else l1=mid1+;
}
printf("%d",ans);
return ;
}

cogs 1685 魔法森林的更多相关文章

  1. 【BZOJ3669】[Noi2014]魔法森林 LCT

    终于不是裸的LCT了...然而一开始一眼看上去这是kruskal..不对,题目要求1->n的路径上的每个点的两个最大权值和最小,这样便可以用LCT来维护一个最小生成路(瞎编的...),先以a为关 ...

  2. BZOJ 3669 【NOI2014】 魔法森林

    Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...

  3. BZOJ-3669 魔法森林 Link-Cut-Tree

    意识到背模版的重要性了,记住了原理和操作,然后手打模版残了..颓我时间...... 3669: [Noi2014]魔法森林 Time Limit: 30 Sec Memory Limit: 512 M ...

  4. 【BZOJ】3669: [Noi2014]魔法森林(lct+特殊的技巧)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3669 首先看到题目应该可以得到我们要最小化 min{ max{a(u, v)} + max{b(u, ...

  5. NOI2014 魔法森林

    3669: [Noi2014]魔法森林 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 106  Solved: 62[Submit][Status] ...

  6. bzoj 3669: [Noi2014]魔法森林 动态树

    3669: [Noi2014]魔法森林 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 363  Solved: 202[Submit][Status] ...

  7. 图论 BZOJ 3669 [Noi2014]魔法森林

    Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...

  8. BZOJ 3669: [Noi2014]魔法森林( LCT )

    排序搞掉一维, 然后就用LCT维护加边MST. O(NlogN) ------------------------------------------------------------------- ...

  9. bzoj 3669: [Noi2014] 魔法森林 LCT版

    Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...

随机推荐

  1. 分享知识-快乐自己:Liunx—Maven 部署步骤

    第一步: 点我下载 Liunx—Maven Linux命令下载:wget [下载文件存放路径]   [下载文件地址] 第二步: 上传 Maven 并解压到 指定的目录:(上传方式 xftp 或 rz ...

  2. ES _source字段介绍——json文档,去掉的话无法更新部分文档,最重要的是无法reindex

    摘自:https://es.xiaoleilu.com/070_Index_Mgmt/31_Metadata_source.html The _source field stores the JSON ...

  3. 关于MFC主菜单和右键弹出菜单

    一.主菜单.弹出菜单和右键菜单的概念: 主菜单是窗口顶部的菜单,一个窗口或对话框只能有一个主菜单,但是主菜单可以被更改(SetMenu()更改): 创建方式:CMenu::CreateMenu(voi ...

  4. linux命令学习笔记(48):watch命令

    watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测 一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下 ...

  5. xxx was built without full bitcode" 编译错误解决

    xxx was built without full bitcode" 编译错误解决 iOS 打包上线 All object files and libraries for bitcode ...

  6. 【LeetCode】010. Regular Expression Matching

    Implement regular expression matching with support for '.' and '*'. '.' Matches any single character ...

  7. Impala的JDBC无法连接

    这是因为客户端连接的JDBC是Impala的master机器,而不是DataNode:因为JDBC的服务宿主是Impalad,而Impalad只是部署在DataNode

  8. ssh免密码登录配置方法,(图示加命令)

    首先,说明一下我们要做的是,serverA 服务器的 usera 用户免密码登录 serverB 服务器的 userb用户. 我们先使用usera 登录 serverA 服务器 [root@serve ...

  9. JSP介绍(4)--- JSP 过滤器

    过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的: 在客户端的请求访问后端资源之前,拦截这些请求. 在服务器的响应发送回客户端之前,处理这些响应. 过滤器通过 Web 部署描述符 ...

  10. springMVC绑定json参数之二(2.2.2)

    二.springmvc 接收不同格式的json字符串 2).格式二:json字符串数组 前台: test = function () { var test = ["123",&qu ...