#include<cstdio> #include<cstring> #include<vector> using namespace std; int vis[5000]; vector<int> map[5000]; int ans; void dfs(int k,int num) { vis[k]=num; //相當於給每個結點編號 for(int i=0;i<map[k].size();i++) { if(!vis[map[k][i]]) dfs(map[k][i],num+1); else { int tmp=vis[k]-vis[map[k][i]]+1;//找到訪問過的結點了,直接編號相減加1就是環的大小 if(tmp>2&&tmp>ans) ans=tmp; } } } int main() { int n,m,a,b,c; int cas; scanf("%d",&cas); while(cas--) { ans=0; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { map[i].clear(); } for(int i=1;i<=m;i++) { scanf("%d%d",&a,&b); map[a].push_back(b); map[b].push_back(a); } memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) { if(!vis[i]); dfs(i,0); } printf("%d\n",ans); } return 0; }