we've started to traverse this cycle from the node c, okay?

And it's convenient because we can, on one hand, for

C, there is still some outgoing untraversed edges.

At the same time, we're going from c,

we can easily traverse the cycles that were constructed previously.

We started from c, and we end at c, and then we continued to traverse this, right?

This way, by shifting the starting point of our cycle,

we actually make sure to glue same two cycles.

So I will tell about this more in a minute.

So let's continue traversing our graph from the node c.

So we go from c to d.

We go from d to g and from g to c.

And now we are again stuck at the vertex c.

Okay, let's now see what happened.

On our first iteration, we started from node a and we constructed some cycle.

Okay, this was, very roughly, this is how our cycle looked like.

Then we realized.

So this was vertex a.

Then we realized that in our cycle somewhere there is a vertex c for

which there were some untraversed edges.

And we found some other cycle, okay?

But then through this node c we can glue these two cycles, right?

Because now, we can traverse these two cycles starting from the vertex c.

So we start from here, we traverse the first cycle this way, and

then we traverse this cycle this way.

So this way, we actually get a larger cycle, okay?

We first constructed some cycle, and

then we actually extended by including some additional cycle.

And what we get now is still some cycle that visit some edges.

And there is still not an Eulerian because there are still untraversed edges.

But now, we're going to repeat the same procedure.

Now we have a larger cycle and in this cycle,

there is a vertex g, which still has untraversed edges.

So we might assume that our brown cycle here,

we started to traverse it from g and we traverse all the brown edges.

And then we continue exploring the graph.

So we go from g to h.

And then we get back to g from h.

Now we extended our cycle even further.

And then we continued from the vertex d, which lies in our brown cycle on one hand.

On the other hand, it still has some outgoing untraversed edges.

And this way, we extend our cycle finally to an Eulerian cycle, okay?

And this basically proves our theorem for, for the directive case, okay?

Now the remaining question is, what happens with path instead of cycles?

It is actually not so difficult to reduce this criteria to the criteria

of the existence of Eulerian cycles.

First of all, if we are looking for a path in our graph, then of course,

not every vertex, not every node in every graph should be balanced because for

the path, we have one outgoing edge.

Probably we visit this node once more again.

This basically means that for the starting vertex of our path,

it has outgoing out-degree which is one more than its incoming degree.

And the same is for the end of this path, right?

Then if you would like to get the criteria,

first of all in your graph if there is an Eulerian path,

then these two vertices should be uniquely definable and identifiable.