• HZOJ-72:猜拳


     

    题目描述

    ​ 在一次聚会中,每人拿着一张印有石头、剪刀、布的卡片,每个人具体拿得是哪种卡片不得而知。

    ​ 现在告诉你某些人之间的胜负关系,并会询问某两个人之间的对战结果,人按照从 11 到 n� 编号。

    ​ 对于每个询问,请给出正确的回答: Win(胜)、Loss(负)、Tie(平)���(胜)、����(负)、���(平)


    输入

    第一行输入两个整数 n,m(1≤n≤10000,3≤m≤10000)�,�(1≤�≤10000,3≤�≤10000),分别代表人数和信息数量。

    接下来 m� 行,每行三个整 a,b,c(a∈[1,2], 1≤b,c≤n)�,�,�(�∈[1,2], 1≤�,�≤�)

    1. 当 a=1�=1 时,代表新增一条已知信息,表示 b, c�, � 对战中 b� 胜
    2. 当 a=2�=2 时,代表根据以上信息,询问 b,c�,� 对战中 b​�​ 的结果

    如果出现某条新增的信息与之前的信息发生冲突,就忽略此条信息。

    输出

    对于每个 a=2�=2 的操作,输出 Win、Loss、Tie���、����、��� 或 Unknown������� 代表对战双方的结果。


    样例输入
    1. 6 6
    2. 1 1 2
    3. 2 1 3
    4. 1 2 4
    5. 1 4 3
    6. 2 1 3
    7. 2 4 1
    样例输出
    1. Unknown
    2. Tie
    3. Win
    1. #include <iostream>
    2. #include <vector>
    3. #include <algorithm>
    4. using namespace std;
    5. class WeightedUnionSet {
    6. public :
    7. WeightedUnionSet(int n) : fa(n + 1), val(n + 1) {
    8. for (int i = 0; i <= n; i++) {
    9. fa[i] = i;
    10. val[i] = 0;
    11. }
    12. }
    13. int get(int x) {
    14. if (fa[x] == x) return x;
    15. int root = get(fa[x]);
    16. val[x] = (val[x] + val[fa[x]]) % 3;
    17. return fa[x] = root;
    18. }
    19. void merge(int a, int b ,int t) {
    20. int aa = get(a), bb = get(b);
    21. if (aa == bb) return;
    22. fa[aa] = bb;
    23. val[aa] = (t - val[a] + val[b] + 3) % 3;
    24. return;
    25. }
    26. vector<int> fa, val;
    27. };
    28. int main() {
    29. int n, m;
    30. cin >> n >> m;
    31. WeightedUnionSet u(n);
    32. for (int i = 0, a, b, c; i < m; i++) {
    33. cin >> a >> b >> c;
    34. if (a == 1) {
    35. u.merge(b, c, 2);
    36. }
    37. else {
    38. if (u.get(b) != u.get(c)) {
    39. cout << "Unknown" << endl;
    40. }
    41. else {
    42. switch ((u.val[b] - u.val[c] + 3) % 3) {
    43. case 0: cout << "Tie" << endl; break;
    44. case 1: cout << "Loss" << endl; break;
    45. case 2: cout << "Win" << endl; break;
    46. }
    47. }
    48. }
    49. }
    50. return 0;
    51. }

  • 相关阅读:
    第十五届蓝桥杯物联网试题(国赛)
    闭包和类的分析
    前端数据可视化之【series、series饼图配置】配置项
    多线程回顾、集合Collection、Set、List等基本知识
    Vue2和Vue3的响应式原理及区别
    【数据结构——单链表】本篇文章通过图文结合的方式能让你轻松的掌握单链表
    聊聊ChatGLM3多用户并发API调用的问题
    docker安装卸载及基础命令
    LeetCode27.移除元素
    Canal
  • 原文地址:https://blog.csdn.net/Mz_yuner/article/details/133936654