(怎么都是抓罪犯 怪不得写法差不多)

团伙 关押罪犯

并查集。以“敌人的敌人是朋友”的思路来处理。所以增加一个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 团伙 关押罪犯的更多相关文章

  1. 洛谷 P1525 【关押罪犯】种类并查集

    题解 P1525 [关押罪犯]:种类并查集 前言: 在数据结构并查集中,种类并查集属于扩展域并查集一类. 比较典型的题目就是:食物链(比本题难一些,有三个种类存在) 首先讲一下本题的贪心,这个是必须要 ...

  2. Luogu P1892 [BOI2003]团伙

    P1892 [BOI2003]团伙 题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人 ...

  3. 【并查集】【P1525】关押罪犯

    传送门 Description Input Output Sample Input Sample Output Hint Solution 非常显然的并查集题目,在本题中,对于每个罪犯i,维护两个信息 ...

  4. 【洛谷 P1525】 关押罪犯 (二分图+二分答案)

    题目链接 并查集+贪心当然是可以做的. 但我用二分图+二分答案. 二分一个\(mid\),删去所有边权小于等于\(mid\)的边,看有没有奇环存在,如果存在,则\(mid\)不行. #include ...

  5. 洛谷P1525 关押罪犯(并查集、二分图判定)

    本人蒟蒻,只能靠题解AC,看到大佬们的解题思路,%%%%%% https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编 ...

  6. 洛谷 P1525 关押罪犯

    题目链接 https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1−N.他们之间的关系自然也极不和谐.很多罪 ...

  7. Luogu 1525 【NOIP2010】关押罪犯 (贪心,并查集)

    Luogu 1525 [NOIP2010]关押罪犯 (贪心,并查集) Description S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨 ...

  8. 洛谷 P1525 关押罪犯==codevs 1069 关押罪犯[NOIP 2010]

    P1525 关押罪犯 513通过 1.4K提交 题目提供者该用户不存在 标签图论并查集NOIp提高组2010 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 咳咳.竟MLE了. 囧.运行时错误 ...

  9. Luogu P1892 团伙

    Luogu P1892 团伙 这是道很简单的并查集-- 不,它并不简单. 这道题考了一个叫做反集的东西. 也就是说: 如果$a$和$b$是敌人,合并$n+b$和$a$,$n+a$和$b$: 如果$c$ ...

随机推荐

  1. 125、Android样式的开发(转载)

    Android样式的开发:drawable汇总篇 http://android.jobbole.com/82117/Android样式的开发:layer-list篇 http://android.jo ...

  2. 【Py-Github】根据条件筛选Github repo的例子

    条件: language:python commits:>100 contributors:>2 stars:>5 fork:0 实现: from github import Git ...

  3. poj3278_kuagnbin带你飞专题一

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 88247   Accepted: 27640 ...

  4. orace函数

    处理字符的函数 lower(char);//把字符串转换成小写格式 upper(char);//把字符转换成大写 length(char);//返回字符串的长度 substr(char,m,n);// ...

  5. Sring 类的例子

    public class ZongHe {     public static void main(String[] args) {     function1();            funct ...

  6. 四、XML语言学习(3)

    XML编程(CURD) 1.XML解析技术概述XML解析方式分为两种:DOM方式和SAX方式DOM:Document Object Model,文档对象模型.这种方式是W3C推荐的处理XML的一种方式 ...

  7. 原生JS表格行拖动排序,添加了回调功能

    function tableDnD(el, callback) { if (typeof (el) == "string") { el = document.getElementB ...

  8. Web前端开发推荐书籍

    Web前端开发推荐书籍 前言 学校里没有前端的课程,那如何学习JavaScript,又如何使自己成为一个合格的前端工程师呢? 读 书吧~相对于在网上学习,在项目中学习和跟着有经验的同事学习,书中有着相 ...

  9. ubuntu14.04 LTS 更新国内网易163源

    2015/10/7 更改ubuntu的默认源是linux学习中必须掌握的基础技能.在此记录,以作参考. 在ubuntu14.04 LTS默认使用的是国外源,由于网络的原因,使用apt-get安装包时异 ...

  10. 部署WEB项目到服务器(四)部署WEB项目Forum到linux服务器(Ubuntu)详解

    突发奇想,想在自己电脑上部署一个web网站. 1,使用Navicat for MYSQL客户端创建WEB项目数据库: Navicat for MYSQL连接虚拟机中的mysql数据库 启动mysql数 ...