BUGLIFE - A Bug’s Life

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.

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.


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.


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.


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

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

hide comments
Anirban Acharya: 2016-10-12 15:32:22

Go ahead.. ;) color your graph.

Last edit: 2016-10-12 15:34:10
marshmellow: 2016-10-12 09:32:01

graph may not be connected..

davidgalehouse: 2016-10-02 09:02:13

For C# had to strip everything down and have vertices store their own search state but the biggest part was using a List instead of a HashSet to store neighbors (not making use of the HashSet functionality for this problem, and even if removing it leads to creating a multigraph (a pair of ants going on more than one date), doesn't matter). I observed no time difference when swapping search start position from first to last vertex. TLE when using BFS instead of DFS. But my same solution gets AC and TLE across different submits so you should probably figure out how those faster people did it.

Last edit: 2016-10-02 20:07:16
sonudoo: 2016-09-15 17:28:34

0.03 seconds, 9.9 MB AC in C. Use Adjacency list.

Last edit: 2016-09-15 17:29:34
nishabha: 2016-09-14 10:31:12

@ Ray Brish Bhanu:
It's not necessary that the graph u get is always connected. The description may not include some bug and in that case , the node representing that bug will not be a part of the graph u are considering. What I want to say is that u should have considered this as a forest and not a graph or tree. You can consider the sample testcase above and it should be clear. Like (1&2) -> one component and (3&4) another connected component.

ondrej_budac: 2016-09-08 15:17:31

Can be done using union-find (0.03s with C++).

gustavoaca1997: 2016-08-30 21:40:09

Always slipping up at "(...) are numbered consecutively starting from one" in every graph problem.

Saif : 2016-08-16 21:10:10

In case of wa try this case:
6 4
1 2
2 3
4 5
5 6
Output should be No suspicious bugs found!

Ray Brish Bhanu: 2016-08-16 08:58:43

test case is poorly designed...if u take last edge source then u will get ac...incase of very fist node source u will get wrong answer(using bfs)
..................comment credits-vishal ranchhod bhai patel(gujarat)

Last edit: 2016-08-16 09:00:37
sriraj: 2016-08-14 00:03:39

Dont ignore the Scenario #1 cost me a WA
Some test cases in the toolkit have incorrect answer. Admin plz look to it.

Last edit: 2016-08-14 00:04:47

Added by:Daniel Gómez Didier
Time limit:0.150s-0.189s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ERL JS NODEJS PERL 6 VB.net
Resource:2007 PUJ - Circuito de Maratones ACIS / REDIS