题目链接:

https://jzoj.net/senior/#main/show/5177

题目:

题解:

首先选出的泡泡怪一定是连续的一段 L,R

然后 L 一定属于虫洞左边界中的某一个 R 也同样是这样的

这样就可以枚举 L 和 R,$O(N)$判断是否可行(显然不可能重复经过某个点),总复杂度 $O(NM^2)$

我们看到 R<=1e6 选择二分 R 而不是枚举,这样就可以了

#include<algorithm>
#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std; const int N=1e3+;
const int M=3e3+;
const int inf=1e6;
int n,m,tot;
int head[N],L[M],vis[N];
struct EDGE{
int to,nxt,l,r;
}edge[M<<];
inline int read(){
char ch=getchar();int s=,f=;
while (ch<''||ch>'') {if (ch=='-') f=-;ch=getchar();}
while (ch>=''&&ch<='') {s=(s<<)+(s<<)+ch-'';ch=getchar();}
return s*f;
}
void link(int u,int v,int l,int r){
edge[++tot]=(EDGE){v,head[u],l,r};
head[u]=tot;
}
bool dfs(int x,int l,int r)
{
if (x==n) return ;
if (vis[x]) return ;
vis[x]=;
for (int i=head[x];i;i=edge[i].nxt)
{
if (edge[i].l<=l&&edge[i].r>=r)
{
if (dfs(edge[i].to,l,r)) return ;
}
}
return ;
}
bool check(int l,int r)
{
memset(vis,,sizeof(vis));
if (dfs(,l,r)) return ;
return ;
}
int main()
{
n=read();m=read();
for (int i=,u,v,l,r;i<=m;i++){
u=read();v=read();l=read();r=read();
link(u,v,l,r);link(v,u,l,r);
L[i]=l;
}
sort(L+,L++m);
int ans=,al,ar;
for (int i=m;i;i--){
int l=L[i],r=inf;
while (l+<r)
{
int mid=l+r>>;
if (check(L[i],mid))
{
if (mid-L[i]+>=ans)
{
ans=mid-L[i]+;
al=L[i];ar=mid;
}
l=mid;
}
else r=mid;
}
}
printf("%d\n",ans);
for (int i=al;i<=ar;i++) printf("%d ",i);
return ;
}

最新文章

  1. App-Pass the password
  2. CUtilityCode
  3. Eclipse JAVA项目的 目录结构 和 导入
  4. win8自动升级win8.1后 wampserver无法启动
  5. 【WP8.1】富文本
  6. 【HDU 1828】 Picture (矩阵周长并,线段树,扫描法)
  7. SICP的一些个人看法
  8. 【POJ3612】【USACO 2007 Nov Gold】 1.Telephone Wire 动态调节
  9. Go语言极速入门手册
  10. Mahout系列之----kmeans 聚类
  11. Python生成器的原理及使用
  12. Linux:Day4(上) 文件管理、管道
  13. TensorFlow从入门到理解(一):搭建开发环境【基于Ubuntu18.04】
  14. Linux下源码安装xz的方法
  15. oslo_messaging与rabbitmq
  16. Biorhythms HDU - 1370 (中国剩余定理)
  17. 利用gulp搭建less编译环境
  18. opencv2函数学习之flip:实现图像翻转
  19. C/C++之Memcpy and memmove
  20. javascript的简单查询和插入和修改

热门文章

  1. c6----函数的声明和实现
  2. php面向对象之构造函数和析构函数
  3. Regexp-Utils:基本
  4. org/eclipse/jetty/util/component/Container$Listener
  5. C# First and FirstOrDefault 方法详解
  6. Qt-信号和槽-多对多
  7. Python 函数(一)
  8. 网易NAPM Andorid SDK实现原理--转
  9. jQuery中文学习站点
  10. JavaScript DOM编程艺术(第2版)学习笔记2(4~6章应用实例)