poj 2492 A BUG'S LIFE 不是纯裸的并查集

本文深入探讨了人工智能算法在IT领域的应用,包括开发工具、大数据开发、嵌入式开发环境、音视频基础等细分技术领域。文章详细介绍了各领域内的关键技术、工具和实践案例,旨在帮助开发者更全面地理解并应用这些技术。

Background
Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes that they feature two different genders and that they only interact with bugs of the opposite gender. In his experiment, individual bugs and their interactions were easy to identify, because numbers were printed on their backs.

Problem
Given a list of bug interactions, decide whether the experiment supports his assumption of two genders with no homosexual bugs or if it contains some bug interactions that falsify it.
 

Input

The first line of the input contains the number of scenarios. Each scenario starts with one line giving the number of bugs (at least one, and up to 2000) and the number of interactions (up to 1000000) separated by a single space. In the following lines, each interaction is given in the form of two distinct bug numbers separated by a single space. Bugs are numbered consecutively starting from one.
 

Output

The output for every scenario is a line containing "Scenario #i:", where i is the number of the scenario starting at 1, followed by one line saying either "No suspicious bugs found!" if the experiment is consistent with his assumption about the bugs' sexual behavior, or "Suspicious bugs found!" if Professor Hopper's assumption is definitely wrong.
 

Sample Input

2 3 3 1 2 2 3 1 3 4 2 1 2 3 4
 

Sample Output

Scenario #1: Suspicious bugs found! Scenario #2: No suspicious bugs found!

Hint

Huge input,scanf is recommended. 
题意:就是给你一个一群编号从1-n的虫子,然后给出一些关系表示相互间是不同性别,让你判断有没有矛盾,有矛盾就输出Suspicious bugs found!,没有就输出No suspicious bugs found!举个例子吧:第一个案列就是说有三只虫子,给出了三种关系,1和2 是不同性别,2和3是不同性别,我们可以知道1和3是相同性别,但给出的是1和3是不同性别产生了矛盾就有bugl输出就好了,第二个案例就是说1,2是不同性别,3,4是不同性别显示没有矛盾。
思路:我们需要两个数组,一个用来存放虫子所属的分组,一个用来存虫子的性别,首先我们假定每个虫子都在不同的分组,每个虫子与自己都是同性用0表示,当异性在一起的时候,把他们放在同一个集合里面,其中一个变为性别1,然后在最后判断的时候看看给定的两个虫子在不在同一个分组里面,在同一个分组里 如果两个的性别相同的话那就是有矛盾了。

做的太单纯,错了好多次,后来想清楚了还是错,给自己一组测试数据没过3 3 1 2 1 2 1 2 答案 No suspicious bugs found!结果就是不对啊,后来才意识到就是需要标记每个虫子的性别,然而并不懂怎么做,看了博客,就知道了怎样来做。

总结:做题想的深一点,不要太简单的去做它,这道题收获了不少。

AC代码:
#include <iostream>
#include <cstdio>
using namespace std;
int fu[2010];//他的父亲的状态
int zi[2010];//自己的状态
int found(int x){//找当前孩子的父亲
    int r ;
    if(x == fu[x]){
        return x;
    }
        r = fu[x] ;
        fu[x] = found(fu[x]);
        zi[x] = (zi[x] + zi[r] ) % 2;//孩子的父亲改变了,就要更新孩子的性别
    return fu[r];
}
void bing(int x,int y){
    int xx = found (x);
    int yy = found (y);
    fu[yy] = xx;
    zi[yy] = (zi[x] - zi[y] + 1) % 2;//合并两个虫子,在同一个分组,标记两个孩子性别不同
}
int main(){
    int t;
    int bug;
    int guanxi;
    scanf("%d",&t);
    for(int j = 1;j <= t ;j++){
        scanf("%d%d",&bug,&guanxi);
        for(int i = 1; i <= bug; ++i){
            fu[i] = i;
            zi[i] = 0;
        }
        int flag = 0;
        int bug1,bug2;
        while(guanxi--){
            scanf("%d%d",&bug1,&bug2);
                if(found ( bug1 ) == found (bug2)){
                    if(zi[bug1] == zi[bug2]){
                        flag = 1;
                    }
                }
                else{
                    bing(bug1,bug2);
                }
        }
        printf("Scenario #%d:\n",j);
        if(flag == 0){
            printf("No suspicious bugs found!\n\n");
        }
        else{
            printf("Suspicious bugs found!\n\n");
        }
    }
    return 0;
}

附 组测试数据
3 3
1 2
1 2
1 2
很重要的
         
 
随着信息技术在管理上越来越深入而广泛的应用,作为学校以及一些培训机构,都在用信息化战术来部署线上学习以及线上考试,可以与线下的考试有机的结合在一起,实现基于SSM的小码创客教育教学资源库的设计与实现在技术上已成熟。本文介绍了基于SSM的小码创客教育教学资源库的设计与实现的开发全过程。通过分析企业对于基于SSM的小码创客教育教学资源库的设计与实现的需求,创建了一个计算机管理基于SSM的小码创客教育教学资源库的设计与实现的方案。文章介绍了基于SSM的小码创客教育教学资源库的设计与实现的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。 本基于SSM的小码创客教育教学资源库的设计与实现有管理员,校长,教师,学员四个角色。管理员可以管理校长,教师,学员等基本信息,校长角色除了校长管理之外,其他管理员可以操作的校长角色都可以操作。教师可以发布论坛,课件,视频,作业,学员可以查看和下载所有发布的信息,还可以上传作业。因而具有一定的实用性。 本站是一个B/S模式系统,采用Java的SSM框架作为开发技术,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SSM的小码创客教育教学资源库的设计与实现管理工作系统化、规范化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值