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");
    }
    }
  • 相关阅读:
    问题解决:System.TypeLoadException: 未能从程序集“XXX”中加载类型“XXX
    域名格式验证
    .NET 中String 和StringBuilder 以及他们的区别
    mysql 重设管理员密码 或忘记管理员密码 (必杀)
    CMD 命令
    C# 给多线程传参的三种方式
    django 表单数据的验证实现原理
    django上传文件
    django signal
    Django如何处理语言偏好(根据此可以设置中文)
  • 原文地址:https://www.cnblogs.com/Open_Source/p/1904931.html
Copyright © 2011-2022 走看看