import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
ArrayList<ArrayList<Integer>> graph = new ArrayList<>();
int[] edge_count = new int[n+1];
for (int i=0; i<n+1; i++) {
graph.add(new ArrayList<>());
}
for (int i=0; i<m; i++) {
st = new StringTokenizer(br.readLine());
int v = Integer.parseInt(st.nextToken());
int u = Integer.parseInt(st.nextToken());
graph.get(v).add(u);
graph.get(u).add(v);
edge_count[v] += 1;
edge_count[u] += 1;
}
ArrayList<Integer> non2List = new ArrayList<>();
for (int i=1; i<n+1; i++) {
if(edge_count[i] != 2) non2List.add(i);
}
// for (int i=1; i<n+1; i++) {
// System.out.print(edge_count[i] + " ");
// System.out.println(graph.get(i));
// }
int max_value = 0;
boolean[] visited = new boolean[n+1];
for (int non_2 : non2List) {
visited[non_2] = true;
for (int neighbor : graph.get(non_2)) {
int dist = 1;
// boolean[] visited = new boolean[n+1]; 너무 크니 prev를 쓰자
int prev = non_2;
int cur = neighbor;
while(edge_count[cur] == 2) {
visited[cur] = true;
int next = -1;
for (int option : graph.get(cur)) {
if (option != prev) {
next = option;
}
}
dist ++;
prev = cur;
cur = next;
}
max_value = Math.max(max_value, dist);
}
}
for (int i=1; i<n+1; i++) {
if(!visited[i]) {
int cur = i;
int dist = 0;
int prev = -1;
while(!visited[cur]) {
visited[cur] = true;
dist ++;
int next = -1;
for (int option : graph.get(cur)) {
if(option != prev) {
next = option;
}
}
prev = cur;
cur = next;
}
max_value = Math.max(max_value, dist);
}
}
System.out.println(max_value);
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: