讨论 / 仿照拓扑排序
陈建川 2014-10-09 06:20:03
点我顶贴 收藏 删除
#include<iostream>

#include<cstdio>

#include<cstring>

using namespace std;

struct AC{

int xmin,xmax;

int ymin,ymax;

}a[27];

int n,b[27][2],i,j,h,ans[27],cnt=0;

bool v[27];

bool check(int x,int y){

if(b[x][0]>=a[y].xmin&&b[x][0]<=a[y].xmax&&b[x][1]>=a[y].ymin&&b[x][1]<=a[y].ymax)

return 1;

else return 0;

}

int main(){

cin>>n;

for(i=1;i<=n;i++)

cin>>a[i].xmin>>a[i].xmax>>a[i].ymin>>a[i].ymax;

memset(ans,0,sizeof(ans));

memset(v,0,sizeof(v));

for(i=1;i<=n;i++)

cin>>b[i][0]>>b[i][1];

int m=n;

while(m--){

for(i=1;i<=n;i++)

{if(v[i]==0)

{int t=0,flag;

for(j=1;j<=n;j++)

if(check(i,j)&&ans[j]==0)

{t++;

flag=j;

}

if(t==1){ans[flag]=i;v[i]=1;cnt++;}

}

}}

if(cnt==n)

for(i=1;i<=n;i++)

printf("%c%d\n",'A'+i-1,ans[i]);

else cout<<"None"<<endl;

return 0;

}

查看更多回复
提交回复