提交时间:2022-07-19 11:50:55

运行 ID: 52247

#include<cstdio> #include<iostream> using namespace std; int n,l[2501],r[2501],lb[2501][2501],s[2501],rd[2501],ans,v[2501]; void dfs(int x,int y) { v[y]=1; ans=ans>x?ans:x; for(int i=1;i<=s[y];i++) { if(!v[lb[y][i]])dfs(x+1,lb[y][i]); } v[y]=0; return; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d%d",&l[i],&r[i]); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(i==j)continue; if(l[i]<=l[j]&&r[j]<=r[i])lb[i][++s[i]]=j,rd[j]=1; } for(int i=1;i<=n;i++) { if(rd[i])continue; dfs(1,i); } printf("%d",ans); return 0; }