#include<stdio.h>
#define max 2005
int
father
[
max
],
Rank
[
max
],
sex
[
max
],
flag
=
0
;
int
find_set
(
int
x
)
{
if
(
x
!=
father
[
x
])
father
[
x
]
=
find_set
(
father
[
x
]);
return
father
[
x
];
}
void
make_set
()
{
int
i
;
for
(
i
=
1
;
i
<
max
;
i
++
)
{
father
[
i
]
=
i
;
Rank
[
i
]
=
0
;
sex
[
i
]
=
0
;
}
}
void
Union
(
int
x
,
int
y
)
{
x
=
find_set
(
x
);
y
=
find_set
(
y
);
if
(
x
==
y
)
{
return
;
}
if
(
Rank
[
x
]
>
Rank
[
y
])
{
father
[
y
]
=
x
;
}
else
{
if
(
Rank
[
x
]
==
Rank
[
y
])
Rank
[
y
]
++
;
father
[
x
]
=
y
;
}
}
int
main
()
{
void
Union
(
int
x
,
int
y
);
int
t
,
n
,
m
,
x
,
y
,
k
,
flag
;
scanf
(
"%d"
,
&
t
);
for
(
k
=
1
;
k
<=
t
;
k
++
)
{
flag
=
0
;
make_set
();
scanf
(
"%d%d"
,
&
n
,
&
m
);
while
(
m
--
)
{
scanf
(
"%d%d"
,
&
x
,
&
y
);
if
(
flag
)
continue
;
if
(
find_set
(
x
)
==
find_set
(
y
)) //判断x和y的父亲结点是不是一样,相同则说明x和y的性别是一样的
flag
=
1
;
else
{
if
(
sex
[
x
]
!=
0
)
Union
(
sex
[
x
],
y
); //x之前已经有了对象,把x的之前的对象与现在的对象y进行合并,说明x的对象性别是一样的
else
sex
[
x
]
=
y
; //x之前没有对象,则现在x的对象为y
if
(
sex
[
y
]
!=
0
)
Union
(
sex
[
y
],
x
);
else
sex
[
y
]
=
x
;
}
}
printf
(
"Scenario #%d:
\n
"
,
k
);
if
(
flag
==
1
)
printf
(
"Suspicious bugs found!
\n\n
"
);
else
printf
(
"No suspicious bugs found!
\n\n
"
);
flag
=
0
;
}
return
0
;
}