刘nu佳大法好、
这是一份有错误的代码 时刻提醒我的错误们
#include <iostream>
#include <cstdio>
#include <cstring>
#include <climits>
struct node
{
int x,y;
node():x(-1),y(-1){}
};
using namespace std;
int b[1001][1001],d[1001],n;
node a[1001];
int MAX(int x,int y)
{
return x>y?x:y;
}
int solve(int i)
{
int &ans = d[i];
if(ans > 0)
return ans;
ans = 1;
for(int j=1;j<=n;++j)
if(b[i][j]) ans = MAX(ans,1+solve(j));
return ans;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d %d",&a[i].x,&a[i].y);
memset(b,0,sizeof(b));
memset(d,0,sizeof(d));
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if((a[j].x>a[i].x&&a[j].y>a[i].y)||(a[j].y>a[i].x&&a[j].x>a[i].y))
b[i][j] = 1;
solve(1);
int maxn = INT_MIN;
for(int i=1;i<=n;++i)
maxn = MAX(maxn,solve(i));
printf("%d\n",maxn);
}
return 0;
}