http://poj.org/problem?id=1703

题意:有两个黑帮团伙,共n名团伙成员(不知道属于这两个黑帮中的哪一个)。现在警察有一些信息,每条信息包含2个人的编号,如果给出A a b,则输出a b的关系,即是否属于同一个黑帮;

如果给出D a b,则说明a b属于不同的黑帮。

思路:典型的并查集,只要两者的关系确定了,就将他们放入同一个集合内,而另外增加一个表示关系的数组link[]来表示该节点与其父亲的关系,0表示同一类,1表示不同团伙。初始时集合只有自己一个元素,link[] 初始为0。

第一次用c++的输入输出,TLE了。。改成C的就A了。

TLE 代码:

 #include <iostream>
#include <string>
using namespace std;
const int N=;
int f[N],link[N];
int n,m; int find(int x)
{
int t = f[x];
if (x!=f[x])
f[x] = find(f[x]);
link[x] = (link[x]==link[t] ? : );
return f[x]; }
void merge(int x,int y,int fu,int fv)
{
f[fu] = fv;
link[fu] = (link[x]==link[y] ? : );
}
void init()
{
for (int i = ; i <= n; i ++)
{
f[i] = i;
link[i] = ;
} }
int main()
{
int T;
cin>>T;
while(T--)
{ cin>>n>>m;
init();
while(m--)
{
int u,v;
char s;
cin>>s>>u>>v;
int fu = find(u);
int fv = find(v);
if (s=='A')
{
if(fu!=fv)
{
cout<<"Not sure yet."<<endl;
continue;
}
if (link[u]==link[v])
{
cout<<"In the same gang."<<endl;
continue;
}
cout<<"In different gangs."<<endl;
continue;
}
if (s=='D')
{
if (fu!=fv)
merge(u,v,fu,fv);
} }
}
return ;
}

AC代码:

 #include <stdio.h>
const int N=;
int f[N],link[N];
int n,m; int find(int x)
{
int t = f[x];
if (x!=f[x])
f[x] = find(f[x]);
link[x] = (link[x]==link[t] ? : );
return f[x]; }
void merge(int x,int y,int fu,int fv)
{
f[fu] = fv;
link[fu] = (link[x]==link[y] ? : );
}
void init()
{
for (int i = ; i <= n; i ++)
{
f[i] = i;
link[i] = ;
} }
int main()
{
int T;
scanf("%d",&T);
while(T--)
{ scanf("%d%d%*c",&n,&m);
init();
while(m--)
{
int u,v;
char s;
scanf("%c%d%d%*c",&s,&u,&v);
int fu = find(u);
int fv = find(v);
if (s=='A')
{
if(fu!=fv)
{
printf("Not sure yet.\n");
continue;
}
if (link[u]==link[v])
{
printf("In the same gang.\n");
continue;
}
printf("In different gangs.\n");
continue;
}
if (s=='D')
{
if (fu!=fv)
merge(u,v,fu,fv);
} }
}
return ;
}

最新文章

  1. 如何实现一个php框架系列文章【5】安全处理输入
  2. 解决Android与服务器交互大容量数据问题
  3. 不可或缺 Windows Native (16) - C++: 函数重载, 缺省参数, 内联函数, 函数模板
  4. Android之SeekBar定制
  5. django xadmin 插件(3) 列表视图新增自定义按钮
  6. UVa12298 Super Poker II(母函数 + FFT)
  7. 【py分析】使用SGMLParser分析淘宝html
  8. hduacm 5104
  9. 10款经典的web前端特效的预览及源码
  10. SQL Server性能常用语句
  11. linux - 开机启动thunderbird、chromium
  12. MapReduce Shuffle And Sort
  13. nodejs adm-zip 解压文件 中文文件名乱码 问题解决
  14. Java项目中,如何限制每个用户访问接口的次数
  15. python并发编程之多进程2-------------数据共享及进程池和回调函数
  16. 常见爬虫/BOT对抗技术介绍(一)
  17. noteforjs
  18. Algorithms学习笔记-Chapter0序言
  19. Openstack运维指南文档整理
  20. [UI] 精美UI界面欣赏[13]

热门文章

  1. MyEclipse中VSS的使用详解
  2. Lazarus Reading XML- with TXMLDocument and TXPathVariable
  3. Quartz实战
  4. Python之模块、正则
  5. C# SetWindowsHookEx
  6. Django基础配置
  7. sha2 替换sha1 时间表
  8. noip模拟赛 三部曲
  9. JavaScript中的call()和apply()方法,借此实现继承
  10. Monitor和Lock以及区别