#include<bits/stdc++.h> usingnamespace std; constint maxn = 1e2 + 50; int n, m, d[maxn][maxn];
intmain(){ cin >> n >> m; // 正环没有最长路,和负环没有最短路一样,可以无限循环 memset(d, 0x3f, sizeof(d)); for (int i = 1; i <= n; ++i) d[i][i] = 0; for (int u, v, i = 1; i <= m; ++i) { cin >> u >> v; d[u][v] = d[v][u] = 1; } for (int k = 1; k <= n; ++k) { for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { d[i][j] = min(d[i][j], d[i][k] + d[k][j]); } } } int ans = 0; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { ans = max(ans, d[i][j]); } } cout << ans << endl; return0; }