二分图染色——Codeforces741C Arpa's overnight party and Mehrdad's silent entering
2017-05-22 16:19
393 查看
题面:cf741c
这题目名称真长。。。
简要题意:给出N(N≤10^5)对位置,要求构造一个长度为2N的01串,保证每个位置在N个限制中出现恰好一次。要求满足两个条件:
①不能出现连续的三个数位上数字相同;
②每对位置的数字两两不同。
(转自zzh的PPT)
因为有spj,所以我们只要随便构造一组就好了
具体怎么构造呢?
首先对于②其实很简单直接染不同颜色就好了
那关于①怎么搞?我们可以这样继续构造限制
1->2 3->4 5->6 7->8 ……
然后搞好以后按照②的处理方法就行了,这样保证了不会在连续的三个数位上数字相同
然后就是简单的二分图染色了,如果不是二分图输出-1
这题目名称真长。。。
简要题意:给出N(N≤10^5)对位置,要求构造一个长度为2N的01串,保证每个位置在N个限制中出现恰好一次。要求满足两个条件:
①不能出现连续的三个数位上数字相同;
②每对位置的数字两两不同。
(转自zzh的PPT)
因为有spj,所以我们只要随便构造一组就好了
具体怎么构造呢?
首先对于②其实很简单直接染不同颜色就好了
那关于①怎么搞?我们可以这样继续构造限制
1->2 3->4 5->6 7->8 ……
然后搞好以后按照②的处理方法就行了,这样保证了不会在连续的三个数位上数字相同
然后就是简单的二分图染色了,如果不是二分图输出-1
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<iostream> #include<cstdlib> #include<string> #include<ctime> #include<queue> #include<climits> using namespace std; int nedge=0,p[800001],nex[800001],head[800001],n; bool flag=0; int b[200001],x[100001],y[100001]; inline void addedge(int a,int b){ p[++nedge]=b;nex[nedge]=head[a];head[a]=nedge; } inline void dfs(int x){ if(flag)return; for(int k=head[x];k;k=nex[k])if(!b[p[k]]){ b[p[k]]=b[x]==1?2:1; dfs(p[k]); }else if(b[p[k]]==b[x])flag=1; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++){ addedge(2*i-1,2*i);addedge(2*i,2*i-1); scanf("%d%d",&x[i],&y[i]);addedge(x[i],y[i]);addedge(y[i],x[i]); } for(int i=1;i<=2*n;i++)if(!b[i]){ b[i]=1;dfs(i); if(flag)break; } if(flag)puts("-1"); else for(int i=1;i<=n;i++)printf("%d %d\n",b[x[i]],b[y[i]]); return 0; }
相关文章推荐
- codeforces741C Arpa’s overnight party and Mehrdad’s silent entering(二分图)
- codeforce 742 E. Arpa’s overnight party and Mehrdad’s silent entering (分食物||二分图染色+dfs)
- Codeforces Round #383 (Div. 2)E. Arpa’s overnight party and Mehrdad’s silent entering【二分图染色】
- Codeforces Round #383 (Div. 1) C. Arpa’s overnight party and Mehrdad’s silent entering
- Codeforces Round #383 (Div. 1) C. Arpa’s overnight party and Mehrdad’s silent entering(贪心,二分图)
- 【CF741C】Arpa's overnight party and Mehrdad's silent entering 题解
- CodeForces 741C Arpa’s overnight party and Mehrdad’s silent entering
- 二分图匹配 + 构造 E. Arpa’s overnight party and Mehrdad’s silent entering
- Codeforces C. Arpa’s overnight party and Mehrdad’s silent entering
- 二分图(Arpa’s overnight party and Mehrdad’s silent entering,cf 741C)
- 【CodeForces】741 D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(dsu on tree)
- CF 741 D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
- Codeforces 742B B. Arpa’s obvious problem and Mehrdad’s terrible solution
- codeforcesB - Arpa’s obvious problem and Mehrdad’s terrible solution 【思维】
- Arpa’s obvious problem and Mehrdad’s terrible solution CodeForces - 742B (异或)
- Codeforces Round #383 (Div. 2)C. Arpa's loud Owf and Mehrdad's evil plan
- Codeforces Round #383 (Div. 2)-A. Arpa’s hard exam and Mehrdad’s naive cheat
- Codeforces 742C C. Arpa's loud Owf and Mehrdad's evil plan
- codeforces 742B - Arpa’s obvious problem and Mehrdad’s terrible solution
- Codeforces Round #383 (Div. 2) D. Arpa's weak amphitheater and Mehrdad's valuable Hoses 并查集+双重01背包