求调
  • 板块灌水区
  • 楼主wenguangxi1
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/14 10:58
  • 上次更新2024/8/14 11:09:29
查看原帖
求调
920636
wenguangxi1楼主2024/8/14 10:58

Sorting Slides

求调

#include<iostream>
#include<queue>
#include<string.h>
#include<vector>
#include<algorithm>
#define int long long
using namespace std;
int n,xx[1001],yy[1001],hh[1001],h1[1001],ct[1001],pp;
vector<int>g[1001],h[1001];
struct edge{int x2,y2,x3,y3;}e[1001];
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	while(1){
		cin>>n;
		if(n==0)break;
		pp++;
		if(pp!=1)cout<<'\n';
		memset(hh,0,sizeof(hh));
		memset(h1,0,sizeof(h1));
		memset(ct,0,sizeof(ct));
		for(int i=1;i<=n;i++){
			g[i].clear();
			h[i].clear();
		}
		for(int i=1;i<=n;i++)cin>>e[i].x2>>e[i].x3>>e[i].y2>>e[i].y3;
		for(int i=1;i<=n;i++)cin>>xx[i]>>yy[i];
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				if(e[i].x2<=xx[j]&&xx[j]<=e[i].x3&&e[i].y2<=yy[j]&&yy[j]<=e[i].y3){
					h[j].push_back(i);
					g[i].push_back(j);
					hh[i]++;
				} 
		queue<int>q;
		for(int i=1;i<=n;i++)
			if(hh[i]==1)
				q.push(i);
		int ggg=0;
		while(!q.empty()){
			int u=q.front();
			q.pop();
			ggg++;
			for(int i=0;i<g[u].size();i++)
				if(!h1[g[u][i]]){
					h1[g[u][i]]=1;
					ct[u]=g[u][i];
					break;
				}
			for(int i=0;i<h[ct[u]].size();i++){
				hh[h[ct[u]][i]]--;
				if(hh[h[ct[u]][i]]==1)
					q.push(h[ct[u]][i]);
			}
		}
		cout<<"Heap "<<pp<<'\n';
		if(!ggg){
			cout<<"none"<<endl;
			continue;
		}
		for(int i=1;i<=n;i++){
			if(ct[i]&&i==n)cout<<"("<<char('A'+i-1)<<","<<ct[i]<<")";
			else if(ct[i])cout<<"("<<char('A'+i-1)<<","<<ct[i]<<") ";
		}
		cout<<'\n';
	}
	return 0;
}
2024/8/14 10:58
加载中...