首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
codeforces 366D 并查集
时间:
2015-05-15 09:13:54
阅读:
110
评论:
0
收藏:
0
[点我收藏+]
标签:
//给你一个无向图,图的每条边有一个范围,所选数x要在这个范围能过这条边
//求x最大范围
//枚举所有的边的右边,对于所选右边找左边最小值,用并查集判断是否可行
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std ;
const int maxn = 1010;
int F[maxn] ;
int find(int x)
{
if(x == F[x])return x ;
else return F[x] = find(F[x]) ;
}
int join(int x,int y)
{
int fx = find(x) ;
int fy = find(y) ;
if(fx != fy)
F[fx] = fy ;
}
struct node
{
int x , y ,l ,r;
}a[maxn*3] ;
bool cmp(struct node a ,struct node b)
{
return a.l < b.l ;
}
int main()
{
int n , m ;
while(~scanf("%d%d" ,&n , &m))
{
int x , y , l ,r ;
for(int i = 1;i <= m;i++)
scanf("%d%d%d%d" ,&a[i].x , &a[i].y ,&a[i].l ,&a[i].r) ;
sort(a+1 ,a+1+m,cmp) ;
int ans = 0 ;
for(int i = 1;i <= m;i++)
{
for(int j = 1;j <= n;j++)
F[j] = j ;
for(int j = 1;j <= m;j++)
{
if(a[j].l > a[i].r)break;
if(a[j].r < a[i].r)continue ;
join(a[j].x ,a[j].y);
if(find(1) == find(n))
{
ans = max(ans , a[i].r - a[j].l + 1) ;
break ;
}
}
}
if(ans)printf("%d\n",ans) ;
else puts("Nice work, Dima!");
}
return 0;
}
codeforces 366D 并查集
标签:
原文地址:http://blog.csdn.net/cq_pf/article/details/45726295
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!