B题求救 !!!!!!!!!!!!

#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分,试试快读快输