当前位置:网站首页>Luogu p1892 [boi2003] Gang (and search for variant anti set)
Luogu p1892 [boi2003] Gang (and search for variant anti set)
2022-07-02 10:58:00 【Morgannr】
[BOI2003] gangs
Title Description
Now there is n n n personal , There are two relationships between them : Friends and enemies . We know :
- A person's friend's friend is a friend
- A man's enemy is his friend
Now we need to form a group of these people . Two people in a group if and only if they are friends . Ask for the maximum number of possible groups of these people .
Input format
Enter an integer in the first line n n n Number of Representatives .
On the second line, enter an integer m m m It means to list m m m A relationship .
Next m m m That's ok , One character per line o p t opt opt And two integers p , q p,q p,q, They represent the relationship ( Friends or enemies ), The first and second of the two people involved . among o p t opt opt There are two possibilities :
- If o p t opt opt by
F, It means p p p and q q q It's a friend. . - If o p t opt opt by
E, It means p p p and q q q It's the enemy .
Output format
One integer per line represents the largest number of groups .
Examples #1
The sample input #1
6
4
E 1 4
F 3 5
F 4 6
E 1 2
Sample output #1
3
Tips
about 100 % 100\% 100% The data of , 2 ≤ n ≤ 1000 2 \le n \le 1000 2≤n≤1000, 1 ≤ m ≤ 5000 1 \le m \le 5000 1≤m≤5000, 1 ≤ p , q ≤ n 1 \le p,q \le n 1≤p,q≤n.
The question :
My friend's friend is my friend , My enemy's enemy is my friend , The final output Number of gangs . Be careful , Two people in a group if and only if they are friends .
Ideas :
It is easy to think of this problem as side weighted and search set , But it's not , According to the original problem surface of this problem , In fact, there can be no relationship between two people : May have never met , Or the police department doesn't know their relationship . The translation on Luo Gu said that everyone has a relationship .
Experience that can be accumulated in this topic :
- For the relationship between two people , There can be no relationship , Record relationships that cannot be merged , Merge people who can be merged when you find them again .
- For the relationship between two people , There must be a relationship , use Weighted and search set .
For this question , We introduce a new approach : Anti set of union search set .
a Express a My friends ,a + n Express a Enemy set of
- If
aandbIt's a friend. , that takeaandbMy friends Just connect :p[Find(a)] = Find(b); - If
aandbIt's the enemy , be takeaThe enemy of sets withbMy friends Connected to a , takebThe enemy of sets withaMy friends Connected to a , namely :p[Find(a + n)] = Find(b),p[Find(b + n)] = Find(a)
Finally, count the number of gangs ,1 ~ n in ( Friends collection ) all p[i] == i The number of people is the answer . Because according to the meaning of the title , All gangs must be distributed in the concentration of friends , therefore as long as Count the number of nodes without ancestors in the friend set .
Code :
#define _CRT_SECURE_NO_WARNINGS 1
#include <bits/stdc++.h>
using namespace std;
//#define int long long
int n, m;
const int N = 1010;
int p[N << 1];
int Find(int x)
{
if (p[x] != x) p[x] = Find(p[x]);
return p[x];
}
signed main()
{
int T = 1; //cin >> T;
while (T--)
{
cin >> n >> m;
int res = 0;
for (int i = 1; i < N<<1; ++i) p[i] = i;
for (int i = 1; i <= m; ++i)
{
char op[2]; int a, b;
cin >> op >> a >> b;
int pa = Find(a), pb = Find(b);
int pan = Find(a + n), pbn = Find(b + n);
if (*op == 'F')
{
p[pb] = pa;
}
else
{
p[pbn] = pa;
p[pan] = pb;
}
}
for (int i = 1; i <= n; ++i) if (p[i] == i) ++res;
cout << res << '\n';
}
return 0;
}
边栏推荐
- [visual studio] visual studio 2019 community version cmake development environment installation (download | install relevant components | create compilation execution project | error handling)
- MySQL数据库远程访问权限设置
- What are the popular frameworks for swoole in 2022?
- 面对不确定性,供应链的作用
- Pywin32 opens the specified window
- Read H264 parameters from mediarecord recording
- HDU1236 排名(结构体排序)
- PCL 点云转深度图像
- 拆解美图SaaS:开着飞机换引擎
- Ks009 implement pet management system based on SSH
猜你喜欢

Beautiful and intelligent, Haval H6 supreme+ makes Yuanxiao travel safer

Overview of integrated learning

From Read and save in bag file Jpg pictures and PCD point cloud

华为AppLinking中统一链接的创建和使用

Analysis of hot spots in AI technology industry

从.bag文件中读取并保存.jpg图片和.pcd点云

JSP webshell free -- the basis of JSP

Hdu1228 a + B (map mapping)

JSP webshell free -- webshell free

AI技术产业热点分析
随机推荐
Ks009 implement pet management system based on SSH
2022-06-17
MySQL lethal serial question 3 -- are you familiar with MySQL locks?
[SUCTF2018]followme
二叉树专题--P1030 [NOIP2001 普及组] 求先序排列
Start class, data analysis, high salary training plan, elite class
Shapiro Wilk normal analysis by SPSS
HDU1234 开门人和关门人(水题)
6种单例模式的实现方式
二叉树专题--洛谷 P3884 [JLOI2009]二叉树问题(dfs求二叉树深度 bfs求二叉树宽度 dijkstra求最短路)
Overview of integrated learning
Database dictionary Navicat automatic generation version
Win11 arm系统配置.net core环境变量
二叉树专题--AcWing 3540. 二叉搜索树建树(实用板子 构建二叉搜索树 并输出前、中、后序遍历)
Kustomize user manual
MySQL environment configuration
华为游戏初始化init失败,返回错误码907135000
对话吴纲:我为什么笃信“大国品牌”的崛起?
[SUCTF2018]followme
2. Hacking lab script off [detailed writeup]