zoukankan      html  css  js  c++  java
  • [Bzoj4195] [NOI2015] 程序自动分析 [并查集,哈希,map] 题解

    用并查集+离散化,注意:并查集数组大小不是n而是n*2

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstdio>
     4 #include <cstdlib>
     5 #include <cstring>
     6 #include <cmath>
     7 #include <ctime>
     8 #include <map>
     9 
    10 using namespace std;
    11 
    12 int    fa[2100000],a[1100000],b[1100000],op[1100000];
    13 
    14 inline    int    get_anc(const int x)
    15 {
    16     return fa[x]==x ? x:fa[x]=get_anc(fa[x]);
    17 }
    18 
    19 int main()
    20 {
    21     int    i,n,q,S,T,cnt=0;
    22 
    23     scanf("%d",&q);
    24     while(q--)
    25     {
    26         scanf("%d",&n);
    27         map<int,int>    Map;
    28         Map.clear();cnt=0;
    29         for(i=1;i<=n<<1;++i)fa[i]=i;
    30         
    31         for(i=1;i<=n;++i)scanf("%d%d%d",&a[i],&b[i],&op[i]);
    32 
    33         for(i=1;i<=n;++i)
    34         {
    35             if(op[i])
    36             {
    37                 if(!Map[a[i]])Map[a[i]]=++cnt;
    38                 if(!Map[b[i]])Map[b[i]]=++cnt;
    39                 int x=Map[a[i]],y=Map[b[i]];
    40                 S=get_anc(x),T=get_anc(y);
    41                 if(S!=T)fa[S]=T;
    42             }
    43         }
    44 
    45         for(i=1;i<=n;++i)
    46         {
    47             if(!op[i])
    48             {
    49                 if(!Map[a[i]])Map[a[i]]=++cnt;
    50                 if(!Map[b[i]])Map[b[i]]=++cnt;
    51                 int x=Map[a[i]],y=Map[b[i]];
    52                 S=get_anc(x),T=get_anc(y);
    53                 if(S==T)
    54                 {
    55                     printf("NO
    ");
    56                     goto Fail;
    57                 }
    58             }
    59         }
    60         
    61         printf("YES
    ");
    62 Fail:;
    63     }
    64 
    65     return 0;
    66 }
    View Code
  • 相关阅读:
    作业
    Java总结
    十四周总结
    十二周课程总结
    十一周总结
    自我介绍
    第二次
    第十二周作业
    第九周作业
    第十三周课程总结
  • 原文地址:https://www.cnblogs.com/Gster/p/4977879.html
Copyright © 2011-2022 走看看