cogs 1685 魔法森林
/*
写了个傻逼二分套二分,真的傻逼了,我这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 魔法森林的更多相关文章
- 【BZOJ3669】[Noi2014]魔法森林 LCT
终于不是裸的LCT了...然而一开始一眼看上去这是kruskal..不对,题目要求1->n的路径上的每个点的两个最大权值和最小,这样便可以用LCT来维护一个最小生成路(瞎编的...),先以a为关 ...
- BZOJ 3669 【NOI2014】 魔法森林
Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...
- BZOJ-3669 魔法森林 Link-Cut-Tree
意识到背模版的重要性了,记住了原理和操作,然后手打模版残了..颓我时间...... 3669: [Noi2014]魔法森林 Time Limit: 30 Sec Memory Limit: 512 M ...
- 【BZOJ】3669: [Noi2014]魔法森林(lct+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=3669 首先看到题目应该可以得到我们要最小化 min{ max{a(u, v)} + max{b(u, ...
- NOI2014 魔法森林
3669: [Noi2014]魔法森林 Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 106 Solved: 62[Submit][Status] ...
- bzoj 3669: [Noi2014]魔法森林 动态树
3669: [Noi2014]魔法森林 Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 363 Solved: 202[Submit][Status] ...
- 图论 BZOJ 3669 [Noi2014]魔法森林
Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...
- BZOJ 3669: [Noi2014]魔法森林( LCT )
排序搞掉一维, 然后就用LCT维护加边MST. O(NlogN) ------------------------------------------------------------------- ...
- bzoj 3669: [Noi2014] 魔法森林 LCT版
Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...
随机推荐
- GridView内容详解(转载)
GridView内容详解(转载) GridView是ASP.NET界面开发中的一个重要的控件,对GridView使用的熟练程度直接影响软件开发的进度及功能的实现.(车延禄)GridView的主要新特性 ...
- MVC中使用showModalDialog
1.mvc中使用模态对话框用于修改数据,如果第一次修改过后刷新页面,第二次修改时显示内容依然是第一次修改之前的,这里用js中的Math.Random()解决 Views: <%: Html.Ac ...
- 七 Django框架,models.py模块,数据库操作——F和Q()运算符:|或者、&并且——queryset对象序列化
F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from django.db.models import F from django.shortcuts import rende ...
- POJ 1504,ZOJ 2001,UVA 713, Adding Reversed Numbers,错误,已找到错误
------------------------------------------------------------ 以此题警告自己: 总结, 1.在数组的使用时,一定别忘了初始化 2.在两种情况 ...
- Hibernate学习---第十节:Hibernate之QBC、样例查询&离线查询
一.QBC (Query By Criteria) 主要有Criteria,Criterion,Oder,Restrictions类组成 1.java 代码如下: /** * 查询所有 */ @Tes ...
- QTableWidget设计原则
一.组成结构: 列表控件由水平表头(self.horizontalHeader()).垂直表头(self.verticalHeader())和单元格(QTableWidgetItem)组成 其中表头又 ...
- C++内存使用机制基本概念详解
.程序使用内存区 一个程序占用的内存区一般分为5种: ()全局.静态数据区:存储全局变量及静态变量(包括全局静态变量和局部静态变量) ()常量数据区:存储程序中的常量字符串等. ()代码区:存储程序的 ...
- oracle 12c 新特性之不可见字段
在Oracle 11g R1中,Oracle以不可见索引和虚拟字段的形式引入了一些不错的增强特性.继承前者并发扬光大,Oracle 12c 中引入了不可见字段思想.在之前的版本中,为了隐藏重要的数据字 ...
- POJ3784:Running Median
浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 题目传送门:http://poj.org/problem?id=3784 用一个"对顶堆& ...
- 清理:db上面的过期的binlog,释放磁盘空间。 (转)
如果10台以内的db的话,自己手动ssh进去,clean就足以,但是上百台呢,就要写脚本了.大概思路:在 一台db跳转机上面, 写一个脚本,访问slave,远程获取正在复制的master上面的binl ...