两个团伙
题目:
有n个人分别属于两个团伙,从1到n编号,接下来m组形如 ch x y的数据,ch为“D"表示 x, y属于不同的团伙,ch为"A"表示询问x,y是否属于同一个团伙。
输入
输入一个整数T(1 \le T \le 20)T(1≤T≤20),表示数据的数目。
对于每一组数据。
第一行给出两个整数,n(1 \le n \le 10^5), m(1 \le m \le 10^5)n(1≤n ≤105),m(1≤m≤105)。
接下来m行,每行形如ch x y。
输出
对于A x y的询问操作,如果x,y属于同一团伙输出 "In the same gang.";如果属于不同团伙,输出 "In different gangs." ;如果不确定,输出 "Not sure yet."。
样例
输入
1 5 5 A 1 2 D 1 2 A 1 2 D 2 4 A 1 4
输出
Not sure yet. In different gangs. In the same gang.
/*************************************************************************
> Author: Henry Chen
> Mail: 390989083@qq.com
> Created Time: 日 8/23 21:25:56 2020
************************************************************************/#include<bits/stdc++.h>
using namespace std;
int fa[100009],sm[100009],sn[100009];
int find(int x)
{
if(fa[x] == x) return x;
int k = find(fa[x]);
sm[x] += sm[fa[x]];
fa[x] = k;
return fa[x];
}
void work()
{
int n,m;
cin >> n >> m;
for(int i = 1;i <= n;i++)
{
fa[i] = i;
sm[i] = 0;
sn[i] = 0;
}
while(m--)
{
char c;
scanf("%*c%c",&c);
int x,y;
scanf("%d%d",&x,&y);
if(c == 'A')
{
if(find(x) != find(y)) puts("Not sure yet.");
else if((sm[x]+sm[y])%2 == 0) puts("In the same gang.");
else puts("In different gangs.");
}
else
{
if(find(x) != find(y))
{
int fx = find(x);
int fy = find(y);
if(sn[fx] > sn[fy])
{
fa[fy] = fx;
sm[fy] = (sm[x]+sm[y]+1)%2;
}
else
{
fa[fx] = fy;
sm[fx] = (sm[x]+sm[y]+1)%2;
if(sn[fx] == sn[fy])
{
sn[fx]++;
}
}
}
}
}
}
int main()
{
int t;
cin >> t;
while(t--)
{
work();
}
return 0;
}
备注:调试花了n多时间,垃圾cin 差17倍。。。
__EOF__
作 者:泌之洋洋
出 处:https://mzyy1001.cnblogs.com
关于博主:博主比较忙可能回复比较慢
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异