codevs 2597 团伙x
1920年的芝加哥,出现了一群强盗。如果两个强盗遇上了,那么他们要么是朋友,要么是敌人。而且有一点是肯定的,就是:
我朋友的朋友是我的朋友;
我敌人的敌人也是我的朋友。
两个强盗是同一团伙的条件是当且仅当他们是朋友。现在给你一些关于强盗们的信息,问你最多有多少个强盗团伙。
输入文件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是敌人。输入数据保证不会产生信息的矛盾。
输出文件gangs.out只有一行,表示最大可能的团伙数。
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
分类标签
Tags
点此展开
超时代码(递归时间太长了吧大概是因为):
(温馨贴士:递归能不用则不用)
#include<iostream>
#include<cstdio>
#define Maxn 1005 using namespace std;//(F为朋友E为敌人) int f1,f2,n,m,tot=;
int F[Maxn],e[Maxn];
bool vis[Maxn]; int find(int x)
{
return x == F[x] ? x : F[x]=find(F[x]);
} void unionn(int x,int y)
{
f1=find(x);
f2=find(y);
if(f1!=f2)
{
F[f1]=f2;
if(e[f2]!=)//合并时,若r2有敌人
{
unionn(e[f2],f1);
if(e[f1]!=)//若r1也有敌人
{
unionn(e[f1],e[f2]);//则它们的敌人是朋友
}
else e[f1]=e[f2];//否则,r2的敌人同时也是r1的敌人,即他们为朋友
}
}
} int main()
{
char p;
int x,y;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)//初始化
{
F[i]=i;
e[i]=;
}
for(int i=;i<=m;i++)
{
cin>>p>>x>>y;
if(p=='F') //if x is y's friend
{
unionn(x,y); //并在一起
}
if(p=='E') //if x is y's 敌人(英语不会哈)
{
x=find(x);
if(e[x]==)//将y作为x团伙的敌人
{
e[x]=y;
}else unionn(e[x],y);
if(e[y]==)//与之类似
{
e[y]=x;
}else unionn(e[y],x);
}
}
for(int i=;i<=n;i++)
{
if(find(i)==i) tot++;//进行统计
}
printf("%d\n",tot);
return ;
}
AC代码:
其实就是把递归的地方改掉了而已,要好好的进行理解!!!
#include<iostream>
#include<cstdio>
#define Maxn 2333 using namespace std;//(F为朋友E为敌人) int f1,f2,n,m,tot=;
int F[Maxn],e[Maxn]; int find(int x)
{
return x == F[x] ? x : F[x]=find(F[x]);
} int main()
{
char p;
int x,y;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)//初始化
{
F[i]=i;
}
for(int i=;i<=m;i++)
{
cin>>p>>x>>y;
if(p=='F') //if x is y's friend
{
f1=find(x);f2=find(y);
if(f1!=f2) F[f1]=f2; //并在一起
}
if(p=='E') //if x is y's 敌人(英语不会哈)
{
e[x] ? F[find(e[x])] = find(y) : e[x]=y;//x有敌人么?有就将y的集团与x敌人的集团并起来,没有就将y作为x的敌人
e[y] ? F[find(e[y])] = find(x) : e[y]=x;//同上
}
}
for(int i=;i<=n;i++)
{
if(find(i)==i) tot++;//进行统计
}
printf("%d\n",tot);
return ;
}
codevs 2597 团伙x的更多相关文章
- Codevs 2597 团伙(并查集)
2597 团伙 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么 ...
- codevs 2597 团伙
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么 ...
- 团伙(codevs 2597)
题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友 ...
- code vs 2597 团伙
题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友 ...
- 食物链 2001年NOI全国竞赛
时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题目描述 Description 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A吃B ...
- T2597 团伙 codevs
http://codevs.cn/problem/2597/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 1920年的芝加 ...
- codevs 3289 花匠
题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
- codevs 1285 二叉查找树STL基本用法
C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...
随机推荐
- C++游戏服务器编程笔记 IP详解
C++游戏服务器编程笔记 IP详解 IP详解 INTERNET的历史 上世纪60年底起源于美国 1992年,Internet上的主机超过了100万台 现在已经是现代文明人的必需品 TCP/IP的 ...
- file_put_contents实现内容追加
file_put_contents("test.txt", "This is another something.", FILE_APPEND); FILE_A ...
- py2 json字符串转字典去掉前缀u
def unicode_convert(input): if isinstance(input, dict): return {unicode_convert(key): unicode_conver ...
- IntelliJ IDEA 复杂的重构技巧
IntelliJ IDEA 复杂的重构技巧(二) 转载 上次我说了一些 "复杂的重构技巧" ,讲的是一些使用 IntelliJ 的简单功能实现复杂的重构需求的技巧. 看到大家的反响 ...
- Global.asax文件
转载:http://www.cnblogs.com/I-am-Betty/archive/2010/09/06/1819558.html 概述: Global.asax文件也叫做asp.net应用程序 ...
- 在Powershell中使用Group-Object和-GroupBy
使用Group-Object(group)按组统计 PS C:\> Get-Command -Module Microsoft.PowerShell.LocalAccounts | group ...
- python读写txt文件
整理平常经常用到的文件对象方法: f.readline() 逐行读取数据方法一: >>> f = open('/tmp/test.txt') >>> f.rea ...
- arcgis 地图如何转到supermap平台
场景:客户使用arcmap配置好的地图数据,由于项目需要转换到超图平台.有如下几种思路供参考. 1. 使用arcmap生成地图缓存,supermap-iServer支持发布arcgis的地图缓存以及t ...
- tomcat性能优化,内存优化和并发线程连接优化
今天被一同事问到tomcat和内存优化的问题,而网上的资料基本都是来回copy,所以抽时间随便写点.文章中设置的参数都是一个随便写的,具体的还要根据自己的情况来定. 1.内存优化: 说到tomcat不 ...
- xml_dom4j
1.用dom4j解析文件 package Xml3; import java.io.File; import java.util.Iterator; import org.dom4j.Attribut ...