Luogu P1892 P1525 团伙 关押罪犯
(怎么都是抓罪犯 怪不得写法差不多)
并查集。以“敌人的敌人是朋友”的思路来处理。所以增加一个e/E数组来存储敌人。
关押罪犯还用到了贪心的思路。将冲突值从大到小排序,如果当前敌对两点在同一集合,直接输出。
团伙:
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n,m;
#define MAXN 1001
int f[MAXN];
int ex[MAXN]={};
void init()
{
scanf("%d%d",&n,&m);
getchar();
for (int i=1;i<=n;i++)
{
f[i]=i;
}
return;
}
int found(int x)
{
if (f[x]==x) return x;
return f[x]=found(f[x]);
}
inline void unionn(int x,int y)
{
f[found(f[x])]=found(y);
return;
}
int uni()
{
int ans=0;
char z;
for (int i=1,x,y;i<=m;i++)
{
cin>>z;
scanf("%d%d",&x,&y);
if (z=='F')
{
unionn(x,y);
continue;
}
if ((!ex[x])&&(!ex[y]))
{
ex[x]=y;
ex[y]=x;
continue;
}
if (!ex[x])
{
ex[x]=f[y];
unionn(x,ex[y]);
continue;
}
if (!ex[y])
{
ex[y]=f[x];
unionn(y,ex[x]);
continue;
}
f[found(f[y])]=found(ex[x]);
f[found(f[x])]=found(ex[y]);
}
for (int i=1;i<=n;i++)
{
if (f[i]==i)
{
ans++;
}
}
return ans;
}
int main()
{
init();
cout<<uni();
return 0;
}
关押罪犯:
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>
#define MAXN 20005
#define MAXM 100005
using namespace std;
struct naiv
{
int a,b,c;
}e[MAXM];
int n,m;
int f[MAXN];
int E[MAXN]={};
bool cmp(naiv x,naiv y)
{
return x.c>y.c;
}
int find(int x)
{
if (f[x]==x) return x;
return f[x]=find(f[x]);
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
{
f[i]=i;
}
for (int i=1;i<=m;i++)
{
scanf("%d%d%d",&e[i].a,&e[i].b,&e[i].c);
}
sort(e+1,e+m+1,cmp);
for (int i=1;i<=m;i++)
{
if (find(e[i].a)==find(e[i].b))
{
printf("%d",e[i].c);
return 0;
}
if (!E[e[i].a])
{
E[e[i].a]=e[i].b;
}
else
{
f[find(E[e[i].a])]=find(e[i].b);
}
if (!E[e[i].b])
{
E[e[i].b]=e[i].a;
}
else
{
f[find(E[e[i].b])]=find(e[i].a);
}
}
printf("0");
return 0;
}
Luogu P1892 P1525 团伙 关押罪犯的更多相关文章
- 洛谷 P1525 【关押罪犯】种类并查集
题解 P1525 [关押罪犯]:种类并查集 前言: 在数据结构并查集中,种类并查集属于扩展域并查集一类. 比较典型的题目就是:食物链(比本题难一些,有三个种类存在) 首先讲一下本题的贪心,这个是必须要 ...
- Luogu P1892 [BOI2003]团伙
P1892 [BOI2003]团伙 题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人 ...
- 【并查集】【P1525】关押罪犯
传送门 Description Input Output Sample Input Sample Output Hint Solution 非常显然的并查集题目,在本题中,对于每个罪犯i,维护两个信息 ...
- 【洛谷 P1525】 关押罪犯 (二分图+二分答案)
题目链接 并查集+贪心当然是可以做的. 但我用二分图+二分答案. 二分一个\(mid\),删去所有边权小于等于\(mid\)的边,看有没有奇环存在,如果存在,则\(mid\)不行. #include ...
- 洛谷P1525 关押罪犯(并查集、二分图判定)
本人蒟蒻,只能靠题解AC,看到大佬们的解题思路,%%%%%% https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编 ...
- 洛谷 P1525 关押罪犯
题目链接 https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1−N.他们之间的关系自然也极不和谐.很多罪 ...
- Luogu 1525 【NOIP2010】关押罪犯 (贪心,并查集)
Luogu 1525 [NOIP2010]关押罪犯 (贪心,并查集) Description S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨 ...
- 洛谷 P1525 关押罪犯==codevs 1069 关押罪犯[NOIP 2010]
P1525 关押罪犯 513通过 1.4K提交 题目提供者该用户不存在 标签图论并查集NOIp提高组2010 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 咳咳.竟MLE了. 囧.运行时错误 ...
- Luogu P1892 团伙
Luogu P1892 团伙 这是道很简单的并查集-- 不,它并不简单. 这道题考了一个叫做反集的东西. 也就是说: 如果$a$和$b$是敌人,合并$n+b$和$a$,$n+a$和$b$: 如果$c$ ...
随机推荐
- 升级 Glide 4.0 版本相关配置
http://blog.csdn.net/hexingen/article/details/72578066 http://blog.csdn.net/hexingen/article/details ...
- webpack简介与使用
欢迎小伙伴们为 前端导航仓库 点star https://github.com/pfan123/fr...前端导航平台访问 CommonJS 和 AMD 是用于 JavaScript 模块管理的两大规 ...
- cf954H
挖我自闭了这是什么东西啊. 给出一棵深度为 的树,其中深度为 的节点有 个儿子.问树上的简单路径中长度在 之间的每个有多少条. 表示对于在 层的 个节点,向下走 步的方案数 表示对于 ...
- Express中间件的原理及实现
在Node开发中免不了要使用框架,比如express.koa.koa2拿使用的最多的express来举例子开发中肯定会用到很多类似于下面的这种代码 var express = require('exp ...
- 剑指offer——python【第36题】两个链表的第一个公共结点
题目描述 输入两个链表,找出它们的第一个公共结点 思路 注意,这里的公告结点的意思是相同的点,不仅值相同,next也相同,那么同理公共结点后面的点也是不仅值相同,而且next也相同,这样的话,就可以把 ...
- lower_bound && upper_bound
用lower_bound进行二分查找 ●在从小到大排好序的基本类型数组上进行二分查找. 这是二分查找的一种版本,试图在已排序的[first,last)中寻找元素value.如果[first,last ...
- java的几种对象(PO,VO,DAO,BO,POJO,DTO)解释
一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数 ...
- 目标检测(五)YOLOv1—You Only Look Once:Unified,Real-Time Object Detection
之前的目标检测算法大都采用proposals+classifier的做法(proposal提供位置信息,分类器提供类别信息),虽然精度很高,但是速度比较慢,也可能无法进行end-to-end训练.而该 ...
- Mac 启动或者禁用翻盖自动开关机
从 2016 新款 MacBook Pro 起,预设打开笔电上盖或连接电源供应器时,电脑就会自动开机而且开机时没有启动声,本文教你如何将这些东西调整回原本的样子. 以下指令都是通过「应用程序」→「终端 ...
- AngularJs实现全选功能
html代码 <!-- 数据表格 --> <div class="table-box"> <!--工具栏--> <div class=&q ...