zoukankan      html  css  js  c++  java
  • Gym-100923H-Por Costel and the Match(带权并查集)

    链接:

    https://vjudge.net/problem/Gym-100923H

    题意:

    Oberyn Martell and Gregor Clegane are dueling in a trial by combat. The fight is extremely important, as the life of Tyrion Lannister is on the line. Oberyn and Gregor are measuring their skill in combat the only way the two best fighters in Westeros can, a match of Starcraft. The one who supervises the match in none other than Por Costel the pig.

    Oberyn and Gregor are both playing the Terrans, and they confront each other in the middle of the map, each with an army of Marines. Unfortunately, pigs cannot distinguish colors that well, that is why Por Costel can't figure out which marine belongs to which player. All he sees is marines in the middle of the map and, from time to time, two marines shooting each other. Moreover, it might be the case that Por Costel's imagination will play tricks on him and he will sometimes think two marines are shooting each other even though they are not.

    People are starting to question whether Por Costel is the right person for this important job. It is our mission to remove those doubts. You will be given Por Costel's observations. An observation consists in the fact that Por Costel sees that marine and marine are shooting each other. We know that marines in the same team (Oberyn's or Gregor's) can never shoot each other. Your task is to give a verdict for each observation, saying if it is right or not.

    An observation of Por Costel's is considered correct if, considering this observation true and considering all the correct observations up to this point true, there is a way to split the marines in "Oberyn's team" and "Gregor's team" such that no two marines from the same team have ever shot each other. Otherwise, the observation is considered incorrect.

    "Elia Martell!!! You rushed her! You cheesed her! You killed her SCVs!"

    思路:

    带权并查集, 维护每个节点与根节点的关系,为0是友军,为1是敌军,

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <vector>
    //#include <memory.h>
    #include <queue>
    #include <set>
    #include <map>
    #include <algorithm>
    #include <math.h>
    #include <stack>
    #include <string>
    #include <assert.h>
    #include <iomanip>
    #define MINF 0x3f3f3f3f
    using namespace std;
    typedef long long LL;
    
    const int MAXN = 1e5+10;
    int Fa[MAXN], Level[MAXN];
    int n, m;
    
    int GetF(int x)
    {
        if (Fa[x] == x)
            return x;
        int tmp = Fa[x];
        Fa[x] = GetF(Fa[x]);
        Level[x] = Level[x]^Level[tmp];
        return Fa[x];
    }
    //1 1 3
    //0 1 0
    //1 2 3
    //0 same 1 diff
    int main()
    {
    //    freopen("meciul.in", "r", stdin);
    //    freopen("meciul.out", "w", stdout);
        ios::sync_with_stdio(false);
        cin.tie(0);
        int t;
        cin >> t;
        while (t--)
        {
            cin >> n >> m;
            for (int i = 1;i <= n;i++)
                Fa[i] = i, Level[i] = 0;
            int l, r;
            while (m--)
            {
                cin >> l >> r;
                int tl = GetF(l);
                int tr = GetF(r);
                if (tl != tr)
                {
                    Level[tr] = 1^Level[l]^Level[r];
                    Fa[tr] = tl;
                    cout << "YES" << endl;
                }
                else
                {
                    if (Level[l] == Level[r])
                        cout << "NO" << endl;
                    else
                        cout << "YES" << endl;
                }
    //            for (int i = 1;i <= n;i++)
    //                cout << Level[i] << ' ' ;
    //            cout << endl;
            }
        }
    
        return 0;
    }
    
  • 相关阅读:
    博客园cnblogs for win8 托管到GitHub开源
    html5 canvas 画图表
    回文数
    SpringBoot+logback实现按业务输出日志到不同的文件
    Class.forName() 与 ClassLoader.loadClass()的区别
    Easypoi实现单模板生成多页word文档
    普通Java项目中使用Sl4j+Log4j2打印日志
    SpringBoot集成JWT
    Java8_Lambda表达式
    SpringBoot自定义Condition注解
  • 原文地址:https://www.cnblogs.com/YDDDD/p/11372646.html
Copyright © 2011-2022 走看看