并查集

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <map>
  5. #include <set>
  6. #include <queue>
  7. #include <stack>
  8. #include <vector>
  9. #include <sstream>
  10. #include <string>
  11. #include <cstring>
  12. #include <algorithm>
  13. #include <iostream>
  14. #define maxn 20010
  15. #define INF 0x7fffffff
  16. #define inf 10000000
  17. #define MOD 1000000007
  18. #define ull unsigned long long
  19. #define ll long long
  20. using namespace std;
  21.  
  22. int f[maxn];
  23.  
  24. int findd(int x)
  25. {
  26. return f[x] == x ? x : f[x] = findd(f[x]);
  27. }
  28.  
  29. void init()
  30. {
  31. for(int i = 0; i < maxn; ++ i) f[i] = i;
  32. }
  33.  
  34. int main()
  35. {
  36. int n;
  37. while(scanf("%d", &n) == 1)
  38. {
  39. init();
  40. int x, y, c;
  41. while(scanf("%d%d%d", &c, &x, &y) == 3 && x+y+c)
  42. {
  43. int q1 = findd(x), q2 = findd(x+n), q3 = findd(y), q4 = findd(y+n);
  44. if(c == 1)
  45. {
  46. if(q1 == q4) puts("-1");
  47. else f[q1] = q3, f[q2] = q4;
  48. }
  49. else if(c == 2)
  50. {
  51. if(q1 == q3) puts("-1");
  52. else f[q1] = q4, f[q2] = q3;
  53. }
  54. else if(c == 3)
  55. {
  56. if(q1 == q3) puts("1");
  57. else puts("0");
  58. }
  59. else
  60. {
  61. if(q1 == q4) puts("1");
  62. else puts("0");
  63. }
  64. }
  65. }
  66. return 0;
  67. }

uva 10158的更多相关文章

  1. Uva 10158 War

    并查集的应用 直接阔成2倍.后N项为对应的敌人 #include <map> #include <set> #include <list> #include < ...

  2. UVA 10158 War(并查集)

    //思路详见课本 P 214 页 思路:直接用并查集,set [ k ]  存 k 的朋友所在集合的代表元素,set [ k + n ] 存 k  的敌人 所在集合的代表元素. #include< ...

  3. UVA 10158 并查集的经典应用

    这个题目一看就是用并查集,有N个国家代表,在M行给出两两之间的关系,敌人或者朋友,(当然如果该关系跟已知关系冲突,则输出-1) 关系的几个约束条件时这样的 在朋友方面,朋友的朋友就是自己的朋友,这个就 ...

  4. runtime error 的原因

    1.  数组访问越界 2.  分母为 0 3.   括号 做题时偶然发现的! (详见 UVA 10158 War) 代码中出现了这种东西 else if( arefriends(x,y==-1)  ) ...

  5. Codeforces Round #747 (Div. 2)

    比赛地址 A(水题) 题目链接 题目: 给出指定\(n\),求解出一段区间\([l,r]\)使得\(\sum\limits_{i=l}^ri=n\) 解析: 从点0,1两点作为起点分别向左右延伸长度, ...

  6. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  7. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  8. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  9. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

随机推荐

  1. UI2_ButtonChess

    // // AppDelegate.m // UI2_ButtonChess // // Created by zhangxueming on 15/6/30. // Copyright (c) 20 ...

  2. php面向对象的基础:创建OOP的类和字段

    类的创建 class Computer{ //类的字段(成员) //类的方法 } 对象的声明 $computer = new Computer(); new标识符是为了在内存中创建一个对象(实例),而 ...

  3. JAVA:类的三大特征,抽象类,接口,final关键字<3>

    一.类的三大特征 1.封装性 (1).什么是封装 封装就是把抽象出的数据和对数据的操作封装在一起, 数据被保护在内部, 程序的其他部分只有通过被授权的操作(成员方法), 才能对数据进行操作. (2). ...

  4. Java中注解Annotation的定义、使用、解析

    此例子,用于说明如何在Java中对“注解 Annotation”的定义.使用和解析的操作.注解一般用于自定义开发框架中,至于为什么使用,此处不作过多说明,这里只说明如何使用,以作备记.下面例子已测试, ...

  5. Codevs 1092 不高兴的津津

    时间限制: 1 s   空间限制: 128000 KB   题目等级 : 白银 Silver 题目描述 Description 津津上初中了.妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参 ...

  6. 获取Class对象的方法及Class类型的一些讨论

    (1)Class.forName(className) (2)classname.Class 如果是数组,则是数组类型[].class (3)对象.getClass() 例: String path ...

  7. 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求【转载】

    标签:C# HTTPS HttpWebRequest HTTP HttpWebResponse 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. ...

  8. Window 8.1 计时器功能及图片切换

    <Canvas Margin="450,0" Width="795" Grid.Column="1"> <Image Ma ...

  9. sql server 查询多个不关联表且对结果编号

    1.除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图.内联函数.派生表.子查询和公用表表达式中无效. 解决方法:top 100 percent * 2.如何对查询结果编 ...

  10. 数据库操作类util

    package util; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; imp ...