#include <bits/stdc++.h>
#define inf 0x7fffffff
//#define ll long long
//#define int long long
//#define double long double
#define eps 1e-8
//#define mod 1e9+7
using namespace std;
const int mod=1e9+7;
const int M=1e5;
const int N=2*1e6+5;//空间最大限制 4e8
struct node
{
int ver,next;
}e[N];
int tot,head[N];
int v[N];
int n,m;
multimap < int , int > h;
void add(int x,int y)
{
e[++tot].ver=y;
e[tot].next=head[x];
head[x]=tot;
}
void dfs(int x,int color)
{
v[x]=color;
for(int i=head[x];i;i=e[i].next)
{
int y=e[i].ver;
if(!v[y]) dfs(y,3-color);
}
}
signed main()
{
// ios::sync_with_stdio(false);
cin>>n;
for(int i=0;i<n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
add(i<<1,i<<1|1);
add(i<<1|1,i<<1);
h.insert(make_pair(x<<1,i<<1));
h.insert(make_pair(y<<1|1,i<<1|1));
}
multimap < int , int> :: iterator it=h.begin();
for(int i=0;i<n;i++)
{
int l=it->second;it++;
int r=it->second;it++;
add(l,r);
add(r,l);
}
for(int i=0;i<n;i++) if(!v[i<<1]) dfs(i<<1,1);
for(int i=0;i<n;i++) printf("%d ",v[i<<1]-1);
return 0;
}
二分图扩展
最新推荐文章于 2022-11-24 11:15:56 发布