【题解】洛谷 P1525 关押罪犯
题目
思路
- 把所有边sort一遍从大到小排列
- 运用并查集思想敌人的敌人就是朋友
- 从最大边开始查找连着的两个罪犯
- 如果他们在一个监狱就输出并结束程序
- 如果不在就把他们互为敌人存下来
- 如果他们已经有一个敌人了那就把他们敌人和自己合并(因为总共只有两个监狱)
- 最后判0
代码
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,tot;
int fat[400010];
struct edge
{
int l,r,w;
}e[400010];//左边的点 右边的点 仇恨值
bool cmp(edge a,edge b)
{
return a.w>b.w;
}//按照仇恨值从大到小
int enemy[400010];//存敌人
int find(int x)
{
if(x!=fat[x])
fat[x]=find(fat[x]);
return fat[x];
}
void unionn(int a,int b)
{
int fa=find(a);
int fb=find(b);
fat[fa]=fb;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
fat[i]=i;
for(int i=1;i<=m;i++)
cin>>e[i].l>>e[i].r>>e[i].w;
sort(e+1,e+1+m,cmp);
for(int i=1;i<=m;i++)
{
if(find(e[i].l)==find(e[i].r))//如果在同一监狱就输出并结束
{
cout<<e[i].w;
return 0;
}
else
{
if(!enemy[e[i].l])//如果左边的点没有敌人 就加入敌人
enemy[e[i].l]=e[i].r;
else//如果有敌人 就合并敌人和右边的点
unionn(enemy[e[i].l],e[i].r);
if(!enemy[e[i].r])//同上
enemy[e[i].r]=e[i].l;
else
unionn(e[i].l,enemy[e[i].r]);
}
}
cout<<0;//特判0
}
【题解】洛谷 P1525 关押罪犯的更多相关文章
- 洛谷 P1525 关押罪犯
题目链接 https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1−N.他们之间的关系自然也极不和谐.很多罪 ...
- 洛谷P1525 关押罪犯
To 洛谷.1525 关押罪犯 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用 ...
- 洛谷 P1525 关押罪犯==codevs 1069 关押罪犯[NOIP 2010]
P1525 关押罪犯 513通过 1.4K提交 题目提供者该用户不存在 标签图论并查集NOIp提高组2010 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 咳咳.竟MLE了. 囧.运行时错误 ...
- 洛谷P1525 关押罪犯(并查集、二分图判定)
本人蒟蒻,只能靠题解AC,看到大佬们的解题思路,%%%%%% https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编 ...
- [NOIP2010] 提高组 洛谷P1525 关押罪犯
刚才做并查集想到了这道以前做的题,干脆一并放上来 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可 ...
- NOIP2010 codevs1069 洛谷P1525 关押罪犯
Problem Description S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极 不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用 ...
- 洛谷——P1525 关押罪犯
https://www.luogu.org/problem/show?pid=1525 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间 ...
- 洛谷 P1525 关押罪犯 (贪心,扩展域并查集)
题意:有\(n\)个罪犯,\(m\)对罪犯之间有仇,现在将这些罪犯分到两个监狱里去,问两个监狱里有仇罪犯之间的最大权值最小为多少. 题解:先按边权从大到小排序,然后贪心,边权大的两个罪犯,我们一定要先 ...
- 洛谷P1525关押罪犯
传送门啦 想让最大值最小,所以,这题可以用二分法,排序之后发现可以并查集,因为要使最大值最小,排序后这个最大值是存在的. 对于会冲突的两个罪犯,我们连一条无向边,然后按权值从大到小排序,从大到小枚举每 ...
随机推荐
- 封装Lua for C#
http://blog.csdn.net/rcfalcon/article/details/5583095
- 【计算机网络】SSL交互和握手过程
SSL消息按如下顺序发送: 1.Client Hello 客户发送服务器信息,包括它所支持的密码组.密码组中有密码算法和钥匙大小: 2.Server Hello 服务器选择客户和服务器都支持的密 ...
- DEM、DSM、DOM 名词解释
1.DEM(Digital Elevation Matrix) 数字高程矩阵. 数字高程模型(Digital Elevation Model,缩写DEM)是一定范围内规则格网点的平面坐标(X,Y)及其 ...
- 【linux相识相知】VIM编辑器
Vim是一个类似Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了许多的功能,VIM是自由软件,今天我们就来讲讲VIM的使用方法. 本文是基于centos7上的vim编辑器演示的 ...
- APP测试点集合
一.功能性测试: (1)根据产品需求文档编写测试用例 (2)软件设计文档编写用例 二.兼容性适配性测试: (1)Android.iOS版本的兼容性 (2)手机分辨率兼容性 (3)网络的兼容性:2G/3 ...
- mysql多表条件更新
有两张表bas_student.bas_householder, 去除学生表中与家长表重复的手机号 UPDATE bas_student a,bas_householder b SET a.mobil ...
- 每隔5s执行一次动作
TimeSpan timespan; //第一次获取系统时间 DateTime d1 = DateTime.Now; while (true) { //第二次获取系统时间 DateTime d2 = ...
- java程序: 从kernel.ubuntu.com下载kernel - HttpURLConnection
用java实现从kernel.ubuntu.com下载内核的小工具 现在的最新的LTS版本是4.19,目前已经更新到4.19.13了. Kernel的更新通知里,经常有下面的陈述: 作为一个听劝的人, ...
- Python爬虫之requests模块(1)
一.引入 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. 警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症.冗余代码症.重新发明轮子症.啃 ...
- 五款app原型设计工具对比
五款app原型设计工具对比 Proto.io, Pixate, Origami, Framer & Form 本文由Panblack 翻译,原文作者 Tes Mat 我用五款“高保真”原型设计 ...