import
java.util.*;
class
Graph {
int
v;
@SuppressWarnings
(
"unchecked"
)
ArrayList<ArrayList<Integer>> l;
Graph(
int
v)
{
this
.v = v;
this
.l =
new
ArrayList<>();
for
(
int
i =
0
; i < v; i++) {
l.add(
new
ArrayList<>());
}
}
void
addedge(
int
i,
int
j)
{
l.get(i).add(j);
l.get(j).add(i);
}
}
class
GFG {
static
void
findCycle(
int
n,
int
e, Graph g)
{
HashMap<Integer, Integer> degree =
new
HashMap<>();
for
(
int
i =
0
; i < n; i++)
degree.put(i, g.l.get(i).size());
int
visited[] =
new
int
[g.v];
for
(
int
i =
0
; i < visited.length; i++)
visited[i] =
0
;
Queue<Integer> q =
new
LinkedList<>();
while
(
true
) {
for
(
int
i =
0
; i < degree.size(); i++){
if
((
int
)degree.get(i) ==
1
&& visited[i] ==
0
)
q.add(i);
}
if
(q.isEmpty())
break
;
while
(!q.isEmpty()) {
int
temp = (
int
)q.poll();
visited[temp] =
1
;
for
(
int
i =
0
; i < g.l.get(temp).size(); i++) {
int
value = (
int
)degree.get((
int
)g.l.get(temp).get(i));
degree.replace(g.l.get(temp).get(i), --value);
}
}
}
int
flag =
0
;
for
(
int
i =
0
; i < visited.length; i++)
if
(visited[i] ==
0
)
flag =
1
;
if
(flag ==
0
)
System.out.print(
"-1"
);
else
{
for
(
int
i =
0
; i < visited.length; i++)
if
(visited[i] ==
0
)
System.out.print(i +
" "
);
}
}
public
static
void
main(String[] args)
{
int
n =
5
;
int
e =
5
;
Graph g =
new
Graph(n);
g.addedge(
0
,
1
);
g.addedge(
0
,
2
);
g.addedge(
0
,
3
);
g.addedge(
1
,
2
);
g.addedge(
3
,
4
);
findCycle(n, e, g);
}
}