zoukankan      html  css  js  c++  java
  • hdoj1829

    Problem : 1829 ( A Bug's Life )     Judge Status : Accepted
    RunId : 2591180    Language : G++    Author : huwenbiao
    Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta

    /***************************************************************\
    *Author: 小呼
    *Created Time: Mon 12 Jul 2010 10:13:14 AM CST
    *File Name: main.cpp
    *Description:并查集问题。可以分配一个数组interaction,用来记录跟
    *每个bug交配过的bug,数组初始化为-1。如果有事件A与B交配,则B与
    *interaction[A]同性(前提是interaction[A]>0),同样,A也与
    *interaction[B]同性,将它们所在的集合合并,如果发现A,B在相同的集合
    *里,那么教授的猜想就是错的。
    \***************************************************************/

    //*========================*Head File*========================*\\

    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    /*----------------------*Global Variable*----------------------*/
    int
    interaction[
    1000001],parent[1000001];//interaction表示第一个
    //之交配的bug
    int M,N,T,A,B;//N是bug数目,M是交配事件数目,T是case数
    bool flag;//用来标记教授的猜想是否正确

    //*=======================*Main Program*=======================*//
    using namespace std;

    int
    find(int x){
    if
    (parent[x]>
    0)
    parent[x]=find(parent[x]);
    return
    parent[x]>
    0?parent[x]:x;
    }


    void
    union_set(int x,int y){
    x=find(x);y=find(y);
    if
    (x==y)
    return
    ;
    if
    (parent[x]<parent[y]){
    parent[x]+=parent[y];
    parent[y]=x;
    }

    else
    {
    parent[y]+=parent[x];
    parent[x]=y;
    }
    }


    int
    main(){

    //freopen("input","r",stdin);
    scanf("%d",&T);
    for
    (int i=
    1;i<=T;++i){
    memset(parent,-
    1,sizeof(parent));
    memset(interaction,-
    1,sizeof(interaction));
    flag=
    0;
    scanf(
    "%d%d",&N,&M);
    while
    (M--){
    scanf(
    "%d%d",&A,&B);
    if
    (flag||find(A)==find(B)){
    //如果已经发现猜想错误或者A,B同性,刚猜想错误
    flag=1;
    continue
    ;
    }

    if
    (interaction[A]>
    0)
    union_set(interaction[A],B);
    else

    interaction[A]=B;
    if
    (interaction[B]>
    0)
    union_set(interaction[B],A);
    else

    interaction[B]=A;
    }

    printf(
    "Scenario #%d:\n",i);
    if
    (flag)
    printf(
    "Suspicious bugs found!\n\n");//注意格式
    else
    printf(
    "No suspicious bugs found!\n\n");
    }
    }
  • 相关阅读:
    CCF2014123集合竞价(C语言版)
    CCF2016092火车购票
    CCF2013123最大的矩形(C语言版)
    CCF2015122消除类游戏(C语言版)
    CCF2014032窗口(C语言)
    CCF2016093炉石传说(C语言版)
    go module 获取码云私有仓库代码
    centos7 编译安装 redis-6.0.5
    goland2019.2破解方法
    mac下protobuf配置记录
  • 原文地址:https://www.cnblogs.com/Open_Source/p/1904931.html
Copyright © 2011-2022 走看看