codevs2597 团伙

题目描述 Description

1920年的芝加哥,出现了一群强盗。如果两个强盗遇上了,那么他们要么是朋友,要么是敌人。而且有一点是肯定的,就是:

我朋友的朋友是我的朋友;

我敌人的敌人也是我的朋友。

两个强盗是同一团伙的条件是当且仅当他们是朋友。现在给你一些关于强盗们的信息,问你最多有多少个强盗团伙。

输入描述 Input Description

输入文件gangs.in的第一行是一个整数N(2<=N<=1000),表示强盗的个数(从1编号到N)。 第二行M(1<=M<=5000),表示关于强盗的信息条数。 以下M行,每行可能是F p q或是E p q(1<=p q<=N),F表示p和q是朋友,E表示p和q是敌人。输入数据保证不会产生信息的矛盾。

输出描述 Output Description

输出文件gangs.out只有一行,表示最大可能的团伙数。

样例输入 Sample Input

6
4
E 1 4
F 3 5
F 4 6
E 1 2

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

2<=N<=1000

1<=M<=5000

1<=p q<=N

#include <iostream>
#include <stdio.h>

using namespace std;

int pre[1000 + 2] , n , m , x , y , ans , i , e[1000 + 2];
char s[10];

int find( int x )
{
    if( x == pre[x] )
        return x;
    return pre[x] = find( pre[x] );
}

void merge( int a , int b )
{
     pre[ find( a ) ] = find( b );
}

int main()
{
    scanf( "%d %d" , &n , &m );
    for( i = 1 ; i <= n ; i++ )
         pre[i] = i;
    while( m-- )
    {
        scanf( "%s %d %d" , s , &x , &y );
        if( s[0] == ‘E‘ )
        {
            if( !e[x] )
                e[x] = y;
            else
                merge( e[x] , y );
            if( !e[y] )
                e[y] = x;
            else
                merge( e[y] , x );
        }
        else
            merge( x , y );
    }
    for( i = 1 ; i <= n ; i++ )
         if( find( i ) == i )
             ans++;
    cout << ans << endl;
    return 0;
}
时间: 2024-11-05 12:10:00

codevs2597 团伙的相关文章

【并查集】团伙

[codevs2597] 团伙 时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两个强盗是同一团伙的条件是当且仅当他们是朋友.现在给你一些关于强盗们的信息,问你最多有多少个强盗团伙. 输入描述 Input Description 输入文件gangs.in的第

【Codevs2597】团伙

Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两个强盗是同一团伙的条件是当且仅当他们是朋友.现在给你一些关于强盗们的信息,问你最多有多少个强盗团伙. Input 输入文件gangs.in的第一行是一个整数N(2<=N<=1000),表示强盗的个数(从1编号到N). 第二行M(1<=M<=5000),表示关于强盗的信息条数. 以下M行,每

code vs 2597 团伙

题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两个强盗是同一团伙的条件是当且仅当他们是朋友.现在给你一些关于强盗们的信息,问你最多有多少个强盗团伙. 输入描述 Input Description 输入文件gangs.in的第一行是一个整数N(2<=N<=1000),表示强盗的个数(从1编号到N). 第二行M(1<=M<=500

【并查集】BZOJ1370- [Baltic2003]Gang团伙

[题目大意] 在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足: 1. 我朋友的朋友是我的朋友: 2. 我敌人的敌人是我的朋友: 所有是朋友的人组成一个团伙.告诉你关于这n个人的m条信息,即某两个人是朋友,或者某两个人是敌人,请你编写一个程序,计算出这个城市最多可能有多少个团伙? [思路] 水………NOIP的小孩都不屑于玩…… 把i拆成i和i+n,其中i表示i的朋友,i+n表示i的敌人.对于(i,j): (1)i,j是朋友,那么合并i和j. (2)i,j不是朋友,那么合并i和j+

并查集之团伙(codevs)

2597 团伙 时间限制: 1 s 空间限制: 128000 KB 题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两个强盗是同一团伙的条件是当且仅当他们是朋友.现在给你一些关于强盗们的信息,问你最多有多少个强盗团伙. 输入描述 输入文件gangs.in的第一行是一个整数N(2<=N<=1000),表示强盗的个数(从1编号到N). 第二行M(1<=M<

大北农偷窃商业机密团伙究竟想干什么?

不搞清楚某些基本概念,大北农偷窃商业机密团伙的问题说不清楚,比如,什么叫"自己能够产生杀虫剂"(Insecticide-producingcorn)的转基因玉米?这种玉米有什么价值?等等. 实际上,害虫的内脏是碱性环境,而人类的消化系统则是酸性的,人不是虫子.有一种叫"Bt"(简称)的细菌在虫子碱性消化系统里面产生一种蛋白质,被其他蛋白质分解为对于虫子而言是毒素(Toxin)的成分,从而麻痹虫子的消化系统,使其肠子内壁出现"孔洞"(Hole),使

长沙居家Spa卖淫团伙 25岁女子竟是幕后老板

据湖南经视报道,长沙最近出现一个居家SPA涉黄团伙,团伙老大竟是25岁年轻女子,这名女子对暗访记者称什么服务都有.http://www.ehotelier.cn/Thread.jsp?tid=182934http://www.ehotelier.cn/Thread.jsp?tid=182940http://www.ehotelier.cn/Thread.jsp?tid=182946http://www.ehotelier.cn/Thread.jsp?tid=182951http://www.eh

2817170358 18628256237 www.lvyouweibo.cn 诈骗团伙,受骗请加群136250179

2817170358  18628256237   www.lvyouweibo.cn  诈骗 18628256237   2817170358  三立达诈骗 近日一个诈骗团伙,借助销售三立达弓弩来实施诈骗. 诈骗手段分为2种,第一会要求打定金,一般打了定金就把你拉黑. 第二会在你打了定金之后给你物流发货到付款,包裹为一支劣质弩半成品,或者是单纯的铁矿来加重包裹,让其看起来像一把弩.从而吸引你付款签收.你要不签收或者要求验货签收则骗你定金,如果签收那就更惨了,你付的余款也被骗. 如果有已经上当的

大陆盗窃团伙被台北警方破获 在台专偷日本人

参考消息网4月1日报道 台媒称,陆客以商务考察名义来台,却行偷窃之实,台北市万华警方破获以四人为组的大陆籍扒手集团. 据台湾中时电子报4月1日报道,这个扒手团伙专挑日本旅客下手,来台短短几天就多次在龙山寺扒窃日本旅客的财物,专案小组埋伏多日,终于趁他们再度下手时出击,当场人赃俱获. 失窃的手提包里有大约16万日元,嫌犯还拿着被害人的信用卡到百货公司盗刷大买黄金,警方获报后立刻展开调查,当天就掌握嫌疑人是大陆籍身份. 嫌犯被逮,除了让日本旅客感受到台湾警方的破案效率,也博回台湾良好治安形象. ht