Gang团伙 (并查集+加点,拆点)

简介: Gang团伙 (并查集+加点,拆点)

在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足:


1、 我朋友的朋友是我的朋友;

2、 我敌人的敌人是我的朋友;


所有是朋友的人组成一个团伙。告诉你关于这n个人的m条信息,即某两个人是朋友,或者某两个人是敌人,请你编写一个程序,计算出这个城市最多可能有多少个团伙?


Input

第1行为n,第二行为m,N小于1000,M小于5000;

以下m行,每行为p x y,p的值为0或1,p为0时,表示x和y是朋友,p为1时,表示x和y是敌人。


Output

一个整数,表示这n个人最多可能有几个团伙。


Sample Input

6

4

E 1 4

F 3 5

F 4 6

E 1 2


Sample Output

3


Hint

{1},{2,4,6},{3,5}


题目分析;


就是我们把是朋友的连在一个组,然后把敌人的敌人也连在一个组;然后遍历找有几个根(就是几个组)。


又是一道模板题,听懂了记得给个赞鼓励一下,码字不易,用爱发电。


上ac代码。

f58230e9f063709cf3167704f4efdf14.gif

有事你就q我;QQ2917366383


学习算法

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+6;
bool gg[maxn];
long long ans=0;
int f[maxn],v[maxn];
int find (int x)//根 
{
  if(f[x]!=x)return find(f[x]);
  return f[x];
}
int main()
{
  int n,m,a,b;
  char p;
  cin>>n>>m;
  for(int i=1;i<=n;i++)//初始化,自己是自己的根节点 
  f[i]=v[i]=i;
  for(int i=1;i<=m;i++)
  {
    cin>>p>>a>>b; 
    if(p=='F')//是朋友就放在一个组 
    f[find(a)]=find(b);
    else
    {
      if(v[a]==a)//这里是对
      v[a]=b;
      if(v[b]==b)
      v[b]=a;
      f[find(a)]=find(v[b]);
      f[find(b)]=find(v[a]);  //  敌人的敌人就是朋友处理为一个组   
    }
  }
  for(int i=1;i<=n;i++)
  if(!gg[find(i)])//看有几个根 
  {
    gg[find(i)]=1;//标记这个根,不在加入循环 
    ans++;
  }
   cout<<ans<<endl;//听懂掌声 
}


b29ec7c0e68822e8e8ed6cc458f52f0a.jpg


相关文章
|
6月前
|
SQL 分布式计算 数据挖掘
从Excel到高级工具:数据分析进阶指南
从Excel到高级工具:数据分析进阶指南
300 54
|
存储 缓存 NoSQL
跟着源码学IM(十一):一套基于Netty的分布式高可用IM详细设计与实现(有源码)
本文将要分享的是如何从零实现一套基于Netty框架的分布式高可用IM系统,它将支持长连接网关管理、单聊、群聊、聊天记录查询、离线消息存储、消息推送、心跳、分布式唯一ID、红包、消息同步等功能,并且还支持集群部署。
13828 1
|
监控 Linux
cento如何查看网口
【6月更文挑战第29天】cento如何查看网口
726 6
【Hexo】butterfly主题添加备案信息
【Hexo】butterfly主题添加备案信息
【Hexo】butterfly主题添加备案信息
|
机器学习/深度学习 Python
【Python机器学习专栏】时间序列数据的特征工程
【4月更文挑战第30天】本文探讨了时间序列数据的特征工程,强调其在捕捉季节性、揭示趋势、处理异常值和提升模型性能中的重要性。介绍了滞后特征、移动窗口统计特征、时间戳特征、频域特征和波动率特征等方法,并提供了Python实现示例。通过有效特征工程,可提高时间序列分析的准确性和预测可靠性。
808 0
|
人工智能 搜索推荐 语音技术
AI - 生成式人工智能(Generative AI)
AI - 生成式人工智能(Generative AI)
1536 0
|
JSON Rust JavaScript
Vite 5.0 正式发布
Vite 5.0 正式发布
325 2
|
机器学习/深度学习 数据采集 数据可视化
自组织映射(Self-Organizing Map, SOM
自组织映射(Self-Organizing Map, SOM)是一种聚类方法,它属于非线性降维技术。SOM 的主要思想是将原始数据映射到一个较低维的子空间,同时保持数据之间的原始结构和关系。SOM 的特点是可视化程度较高,可以直观地展示数据中的簇结构和关联关系。
557 1
“三顾字节”,九次面试,只要算法搞得好,大厂offer跑不了
4.29 字节春招截止倒数第二天,杭州Java商业变现部门暑假实习,隔天挂,春招结束(人生的第一份简历,嗯就开始即结束
|
关系型数据库 MySQL Java
Datax及Datax-web 下载使用
Datax及Datax-web 下载使用
1491 0