zoukankan      html  css  js  c++  java
  • 程序自动分析

    并查集+离散化

    #include<bits/stdc++.h>
    using namespace std;
    void Cin(int &x)
    {
        char c=getchar();x=0;
        while(c>'9'||c<'0')c=getchar();
        while(c<='9'&&c>='0')x=x*10+c-'0',c=getchar();
    }
    int n,k,T;
    struct bcj
    {
        int l,r,v;
        
        bool operator <(const bcj&a)const
        {
            return v>a.v;
        }
        
    }e[100001];
    int dad[100001];
    int b[200011];
    
    int getfather(int x)
    {
        if(dad[x]==x)
        return x;
        dad[x]=getfather(dad[x]);
        return dad[x];
    }
    
    void bf()
    {
        for(int i=1;i<=2*n;i++)
        dad[i]=i;
        for(int i=1;i<=n;i++)
        {
            if(getfather(e[i].l)!=getfather(e[i].r)&&e[i].v==1)
            {
                dad[getfather(e[i].l)]=e[i].r;
            }
            else
            if(getfather(e[i].l)==getfather(e[i].r))
            {
                if(e[i].v==0)
                {
                cout<<"NO"<<endl;
                return;
                }
            }
        }
        cout<<"YES"<<endl;
    }
    
    void init()
    {
          Cin(n);
          for(int i=1;i<=n;i++)
          {
              Cin(e[i].l),Cin(e[i].r),Cin(e[i].v);
              b[i]=e[i].l;
              b[i+n]=e[i].r;
          }
          sort(e+1,e+n+1);
          sort(b+1,b+2*n+1);
          for(int i=1;i<=n;i++)
          {
              e[i].l=lower_bound(b+1,b+2*n+1,e[i].l)-b;
              e[i].r=lower_bound(b+1,b+2*n+1,e[i].r)-b;
          }
    }
    
    int main()
    {
          Cin(T);
          while(T--)
          {
          init();
          bf();
          }
        return 0;
    }
  • 相关阅读:
    转Vtype扩展
    Can't connect to MySQL server on 'ip' (13)
    观察者+js 模式
    (转)ASP.NET架构分析
    sql得到时间
    Js+XML 操作 (转)
    js中的math对象
    property和attribute的区别
    CSS样式定义
    linux 开启 mount
  • 原文地址:https://www.cnblogs.com/war1111/p/7323515.html
Copyright © 2011-2022 走看看