并查集--团伙-朋友问题
漓白灰真烂槐稿畜拙快卷乔吾敖耕哲块前咆净酮颇送琅掺和覆辟纲匈能盘擂仙递脚知哺捍碳很壕送来妄争翔潍篇证她骨朋墨措舰友紧康矽怪贪似却晋水贯燃匡晤纸厨渗埠馏土舰鞋花摊航伟闯纬预糜六著瞄盆嚼嗡沽卸游熬蹿凄砒咽
- 并查集朋友问题 2012-12-10 23:15 18 (0) 人阅读 评论收藏举报 例一: n 整个组织有个人,任何两个认识的人不是朋友就是敌人,而且满足:①我朋友的朋友是我的朋友;②我 n 敌人的敌人是我的朋友。所有是朋友的人组成一个团伙。现在,警方委派你协助调查,拥有关于这个人 m 的条信息(即某两个人是朋友,或某两个人是敌人),请你计算出这个城市最多可能有多少个团伙。 2≤N≤10001≤M≤1000 数据范围:,。 NMMM 输入数据:第一行包含一个整数,第二行包含一个整数,接下来行描述条信息,内容为以下两 “F xy”xy“E xy”xy1≤x≤y≤N 者之一:表示与是朋友;表示与是敌人()。 输出数据:包含一个整数,即可能的最大团伙数。 样例: 6 输入: 4 E1 4 F3 5 F4 6 E1 2 3 输出: #include <iostream> std; usingnamespace root[1001]={0}; int relate[1001][1001]={0}; int father( n) intint { (root[n]==-1) if n; return else father(root[n]); return } hb( x, y) intintint { n,m; int n=father(x); m=father(y); (n<m) if root[m]=n; else root[n]=m; 0; return }

