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.

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.

Example

Input:
2
3 3
1 2
2 3
1 3
4 2
1 2
3 4

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

hide comments
leafbebop: 2017-06-02 19:45:01

No bfs, no dfs, no bipartie graph. Simple Union-Find Set would make it (with speed, indeed).
Hint #1:
Cycle of even length does not affect the divisibility by 2 ( wow, so many i in a word ) of length of paths between two node.
Hint #2:
(SPOILER)
let dist[i] be the distance of a path from i to parent[i]. update it with the find and union function. It can be improved to make dist a bool array.

starbot: 2017-05-16 13:00:09

using printf with ios_base WA..
replaced printf with cout AC...
wtf...

prabodh prakash: 2017-05-10 20:39:53

Accepted in 0.05 secs. I solved it by sorting queries and then simply parsing queries to assign first element as male, second as female (if both unassigned). If one is assigned, other is !firstSex. If both are assigned and both are same - then its a faulty scenario. However, due to bad implementation, I got many WA's.

gulsntils_12: 2017-04-19 11:16:58

Use fast I/O in java otherwise you'll get TLE
just DFS with fast I/O will take 0.18 sec in java

iammangod96: 2017-04-03 12:38:23

If someone is not able to code using adjacency list and bfs, Check the followings -
1) There should be no checking for visited in while(!Q.empty()) loop.
2) Instead of using the adjacency list as a parameter in bipartite graph check function, make it global.
3) It may be possible the graph may have non connected components. So learn how to tackle this issue.

rv404674: 2017-03-22 13:06:32

use bipartite graph
AC in 0.03

abhishek181297: 2017-03-14 05:00:29

Look for the output format i.e "Scenario #i:" thing or else it will give u real pain
Think of graph colouring

da_201501181: 2017-03-03 11:59:04

AC in one GO!! Used BFS
java - 0.18s

nilabja16180: 2017-02-28 13:44:03

AC in ONE GO!!!!!!!
Bipartite Graph with 0.04 sec!

Last edit: 2017-02-28 13:47:04
kashyap2108: 2017-02-28 11:00:42

AC IN ONE GO!!


Added by:Daniel Gómez Didier
Date:2008-11-17
Time limit:1s-5s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ERL JS-RHINO NODEJS PERL6 VB.NET
Resource:2007 PUJ - Circuito de Maratones ACIS / REDIS