[cf741C]Arpa’s overnight party and Mehrdad’s silent entering

直接令2i-1和2i的位置不相同,相当于有2n条边,对其进行二分图染色即可(这张图一定不存在奇环)。

假设给出的n条关系是A类边,2i-12i的边是B类边,可以发现一条路径一定是AB交替(因为A/B的终点一定不可能是A/B的起点),那么环就一定是有等量的A边和B边,即偶环。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define N 200005
 4 struct ji{
 5     int nex,to;
 6 }edge[N<<1];
 7 int E,n,a[N],head[N],x[N],y[N];
 8 void add(int x,int y){
 9     edge[E].nex=head[x];
10     edge[E].to=y;
11     head[x]=E++;
12 }
13 void dfs(int k,int sh){
14     if (a[k]>=0)return;
15     a[k]=sh;
16     for(int i=head[k];i!=-1;i=edge[i].nex)dfs(edge[i].to,sh^1);
17 }
18 int main(){
19     scanf("%d",&n);
20     memset(head,-1,sizeof(head));
21     memset(a,-1,sizeof(a));
22     for(int i=1;i<=n;i++){
23         scanf("%d%d",&x[i],&y[i]);
24         add(x[i],y[i]);
25         add(y[i],x[i]);
26         add(2*i-1,2*i);
27         add(2*i,2*i-1);
28     }
29     for(int i=1;i<=2*n;i++)
30         if (a[i]==-1)dfs(i,0);
31     for(int i=1;i<=n;i++)printf("%d %d\n",a[x[i]]+1,a[y[i]]+1);
32 }
View Code

 

转载于:https://www.cnblogs.com/PYWBKTDA/p/11254620.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值