#include<bits/stdc++.h>
using namespace std;
int n,m,sm=0;
int a[110][110],vis[110];
vector<int>v[110];
void dfs(int s,int dep)
{
sm=max(sm,dep);
for (int i=0;i<v[s].size();i++)
{
if (vis[v[s][i]]) continue;
vis[v[s][i]]=1;
dfs(v[s][i],dep+1);
vis[v[s][i]]=0;
}
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++)
{
for (int j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
}
}
for (int i=1;i<=n;i++)
{
for (int j=i+1;j<=n;j++)
{
int fg1=1,fg2=1;
for (int k=1;k<=m;k++)
{
int pos1=-1,pos2=-1;
for (int kk=1;kk<=n;kk++)
{
if (a[k][kk]==i)
{
pos1=kk;
}
if (a[k][kk]==j)
{
pos2=kk;
}
}
if (pos1<=pos2) fg1=0;
if (pos1>=pos2) fg2=0;
}
if (fg1) v[i].push_back(j);
if (fg2) v[j].push_back(i);
}
}
int res=-1;
for (int i=1;i<=n;i++)
{
sm=1;
memset(vis,0,sizeof(vis));
dfs(i,1);
res=max(res,sm);
}
printf("%d",res);
return 0;
}
2 个赞
80分,试试快读快输