题目链接:https://cn.vjudge.net/problem/CodeForces-766D

题意

写词典,有些词是同义词,有些是反义词,还有没关系的词

首先输入两个词,需要判断是同义还是是反义,若没关系就按操作归为同义或反义

思路

经典并查集的动物园问题

维护两个并查集,find(a)表示a的同类代表元,find(a+maxn)表示异类代表元

find(a)find(b) && find(a+maxn)find(b+maxn) 就是说ab同类

find(a+maxn)find(b) && find(a)find(b+maxn) 就是说ab异类

其他就是没关系,需要合并

提交过程

WA 输出问题,NO写成ON,老毛病
AC

代码

#include <map>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;
const int maxn=1e5+20;
int pre[maxn*2];
map<string, int> toid; int find(int x){
return (x==pre[x])?x:(pre[x]=find(pre[x]));
} int join(int a, int b){
a=find(a); b=find(b);
if (a!=b) pre[a]=b;
} int main(void){
int n, m, q;
char str[100], bstr[100]; while (scanf("%d%d%d", &n, &m, &q)==3 && n){
toid.clear();
for (int i=1; i<=n; i++){
scanf("%s", str);
toid[string(str)]=i;
} int arg, a, b;
for (int i=1; i<=maxn*2; i++) pre[i]=i;
for (int i=0; i<m; i++){
scanf("%d%s%s", &arg, str, bstr);
a=toid[string(str)];
b=toid[string(bstr)]; if (find(a)==find(b) && find(a+maxn)==find(b+maxn)){
if (arg==1) printf("YES\n");
else printf("NO\n");
}else if (find(a)==find(b+maxn) && find(a+maxn)==find(b)){
if (arg==2) printf("YES\n");
else printf("NO\n");
}else{
printf("YES\n");
if (arg==1) {join(a, b); join(a+maxn, b+maxn);}
else {join(a, b+maxn); join(a+maxn, b);}
}
} while (q--){
scanf("%s%s", str, bstr);
a=toid[string(str)];
b=toid[string(bstr)]; if (find(a)==find(b) && find(a+maxn)==find(b+maxn)){
printf("1\n");
}else if (find(a)==find(b+maxn) && find(a+maxn)==find(b)){
printf("2\n");
}else printf("3\n");
}
} return 0;
}
Time Memory Length Lang Submitted
732ms 8380kB 1328 GNU G++ 5.1.0 2018-07-28 14:45:06

CodeForces-766D Mahmoud and a Dictionary 并查集 维护同类不同类元素集合的更多相关文章

  1. Codeforces 766D. Mahmoud and a Dictionary 并查集 二元敌对关系 点拆分

    D. Mahmoud and a Dictionary time limit per test:4 seconds memory limit per test:256 megabytes input: ...

  2. Codeforces 766D Mahmoud and a Dictionary 2017-02-21 14:03 107人阅读 评论(0) 收藏

    D. Mahmoud and a Dictionary time limit per test 4 seconds memory limit per test 256 megabytes input ...

  3. [Codeforces 1027 F] Session in BSU [并查集维护二分图匹配问题]

    题面 传送门 思路 真是一道神奇的题目呢 题目本身可以转化为二分图匹配问题,要求右半部分选择的点的最大编号最小的一组完美匹配 注意到这里左边半部分有一个性质:每个点恰好连出两条边到右半部分 那么我们可 ...

  4. Codeforces Round #396 (Div. 2) D. Mahmoud and a Dictionary 并查集

    D. Mahmoud and a Dictionary 题目连接: http://codeforces.com/contest/766/problem/D Description Mahmoud wa ...

  5. CodeForces 766D Mahmoud and a Dictionary

    并查集. 将每一个物品拆成两个,两个意义相反,然后并查集即可. #pragma comment(linker, "/STACK:1024000000,1024000000") #i ...

  6. Codeforces.1051G.Distinctification(线段树合并 并查集)

    题目链接 \(Description\) 给定\(n\)个数对\(A_i,B_i\).你可以进行任意次以下两种操作: 选择一个位置\(i\),令\(A_i=A_i+1\),花费\(B_i\).必须存在 ...

  7. Codeforces.1027F.Session in BSU(思路 并查集)

    题目链接 \(Description\) 有\(n\)个人都要参加考试,每个人可以在\(ai\)或\(bi\)天考试,同一天不能有两个人考试.求最晚考试的人的时间最早能是多少.无解输出-1. \(So ...

  8. hihoCoder #1291 : Building in Sandbox 逆向处理+并查集维护

    /** 题目:#1291 : Building in Sandbox 链接:https://hihocoder.com/problemset/problem/1291 题意:就是一个三维的空间里,按照 ...

  9. Codeforces325 D【并查集维护连通性】

    参考:大牛blog 思路: 因为是环,所以可以复制一下图,先判断一下和他是不是和与他相邻的8个之一的一个障碍使得构成了一个环,环就是一个连通,用并查集维护即可: 如果没有就ans++,然后并把这个点加 ...

随机推荐

  1. php--方便好用的函数

    在写代码的时候经常会遇见各种各样的问题,感觉需要写函数解决,其实php中已经给出指定函数了.这些函数就需要我们日常去了解记忆. 1.获取指点年份中某月的天数 cal_days_in_month() & ...

  2. ZBrush 笔刷的基础参数

    ZBrush®中的笔刷基本参数主要包括3个:Draw Size(绘制大小).Focal Shift(焦点衰减)和Z Intensity(深度强度),通常使用这3个基本参数对笔刷进行调整. 在视图文档区 ...

  3. Linux 网络属性管理

    Linux网络基础管理-1:IPv4 地址分类:  点分十进制:0.0.0.0-255.255.255.255  A类: 0 0000000 - 0 1111111: 1-127 网络数:126, 1 ...

  4. Eclipse项目启动不了

    当你的Eclipse项目启动不了多半是[eclipse工程jdk版本]的问题 在eclipse中项目jdk版本不匹配的时候需要修改项目工程的jdk版本,但是网上的一些版本修改不是很完全,经过一些摸索之 ...

  5. 使用plsql创建package

    1. 2.需要在packages中新建相同的包名:否则无法编译,报没有声明

  6. Java并发和多线程4:使用通用同步工具CountDownLatch实现线程等待

    CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 用给定的计数 初始化 CountDownLatch.由于调用了 countDown ...

  7. 监控Apache计数器

  8. 高级函数-case

    case函数 (适合区间,>,<判断)    case when 判断表达式 then         when 判断表达式 then         .....    end     s ...

  9. nutch的一些基础整理

    nutch的一些基础整理 原创 2015年03月22日 18:18:01 标签: nutch / 240 编辑 删除 一.关于配置文件: nutch-default.xml:爬虫的默认配置.在${nu ...

  10. jQuery调用WebService ( 同源调用)

    转自原文 jQuery调用WebService 1.编写4种WebService方法     [WebService(Namespace = "http://tempuri.org/&quo ...