矩形嵌套



http://acm.nyist.net/JudgeOnline/problem.php?pid=16

#include
#include
using namespace std;
int G[1010][1010],vis[1010],n;
int deal(int x)
{
 if(vis[x]>0)
  return vis[x];
 vis[x]=1;
 int i;
 for(i=1;i<=n;i++)
  if(G[x][i])
   if(vis[x]     vis[x]=deal(i)+1;
 return vis[x];
}
int main()
{
// freopen("C:\\Users\\John\\Desktop\\hi.txt","r",stdin);
 int T,a[1010],b[1010],i,j;
 cin>>T;
 while(T--)
 {
  cin>>n;
  for(i=1;i<=n;i++)
   cin>>a[i]>>b[i];
  memset(G,0,sizeof(G));
  memset(vis,0,sizeof(vis));
  for(i=1;i<=n;i++)
   for(j=1;j<=n;j++)
    if(a[i]>a[j] && b[i]>b[j] || a[i]>b[j] && b[i]>a[j])
     G[i][j]=1;
  int max=0;
  for(i=1;i<=n;i++)
   if(deal(i)>max)
    max=deal(i);
  cout<  }
 return 0;
}


////////////////////////////////////////////////////////////////////////

http://blog.csdn.net/chuck_0430/article/details/8549131

你可能感兴趣的:(动态规划)