> For the complete documentation index, see [llms.txt](https://mayanktyagi3111.gitbook.io/interview-prep/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mayanktyagi3111.gitbook.io/interview-prep/graphs-bfs-and-dfs/3-cycle.md).

# 3 Cycle

Given a graph with N vertices (numbered from 1 to N) and Two Lists (U,V) of size M where (U\[i],V\[i]) and (V\[i],U\[i]) are connected by an edge , then count the distinct 3-cycles in the graph. A 3-cycle PQR is a cycle in which (P,Q), (Q,R) and (R,P) are connected an edge.

**Input Format :**

```
Line 1 : Two integers N and M
Line 2 : List u of size of M
Line 3 : List v of size of M
```

**Return Format :**

```
The count the number of 3-cycles in the given Graph
```

**Constraints :**

**1<=N<=100**

**1<=M<=(N\*(N-1))/2**

**1<=u\[i],v\[i]<=N**

**Sample Input:**

```
3 3
1 2 3
2 3 1
```

**Sample Output:**

```
1
```

```java
import java.util.Scanner;

public class solution {
    public static int[][] adj = new int[1005][1005];

    public int solve(int n, int m, int U[], int V[]) {
        for (int i = 0; i < m; i++) {
            adj[U[i]][V[i]] = 1;
            adj[V[i]][U[i]] = 1;
        }
        int cycles = 0;
        for (int a = 1; a <= n; a++) {
            for (int b = 1; b <= n; b++)
                if (adj[a][b] == 1) {
                    int u = b;
                    for (int j = 1; j <= n; j++)
                        if (adj[u][j] == 1) {
                            int v = j;
                            if (v == a) // basically working as visisted array
                                continue;
                            if (adj[v][a] == 1) // if a,u,v form a cycle
                                cycles++;
                        }
                }
        }
        return cycles / 6; // A cycle is counted 6 times , (anticlockwise + clockwise )*(from A + from U + from V)
    }
}
```
