题目链接:http://codeforces.com/contest/742/problem/E

题意:

有一个环形的桌子,一共有n对情侣,2n个人,一共有两种菜。

现在让你输出一种方案,满足以下要求:

  1. 情侣间吃不同的菜

  2. 相邻的三个人不能都吃同一种菜

输出任意一个解:

先将相邻的两个人连边,这样就满足了3个人不吃同样一种菜。

情侣间连边。

图中就不存在奇数环。

那么就一定存在解。然后DFS染色就OK 了。

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 const int maxn = 2*100010;
 6
 7 vector <int> G[maxn];
 8 int color[maxn];
 9 int b[maxn];
10 int g[maxn];
11
12 bool dfs(int u)
13 {
14     for(int i=0; i<G[u].size(); i++)
15     {
16         int v = G[u][i];
17         if(color[u]==color[v]) return false;
18         if(!color[v])
19         {
20             color[v] = 3 - color[u];
21             if(!dfs(v)) return false;
22         }
23     }
24     return true;
25 }
26
27 int main()
28 {
29     int n;
30     scanf("%d",&n);
31
32     for(int i=1; i<=n; i++)
33     {
34         G[i*2-1].push_back(2*i);
35         G[i*2].push_back(2*i-1);
36     }
37
38     for(int i=0; i<n; i++)
39     {
40         int u,v;
41         scanf("%d%d",&u,&v);
42         G[u].push_back(v);
43         G[v].push_back(u);
44         b[i] = u;
45         g[i] = v;
46     }
47
48     for(int i=1; i<=2*n; i++)
49     {
50         if(color[i]==0)
51         {
52             color[i] = 1;
53             dfs(i);
54         }
55     }
56
57     for(int i=0; i<n; i++)
58     {
59         printf("%d %d\n",color[b[i]],color[g[i]]);
60     }
61     return 0;
62 }

View Code

转载于:https://www.cnblogs.com/TreeDream/p/6568376.html

Codeforces Codeforces Round #383 (Div. 2) E (DFS染色)相关推荐

  1. Codeforces Beta Round #22 (Div. 2 Only) E. Scheme(DFS+强连通)

    题目大意 给了 n(2<=n<=105) 个点,从每个点 u 出发连向了一个点 v(共 n 条边) 现在要求添加最少的边使得整个图是一个强连通图 做法分析 这道题千万不要一般化:先求强连通 ...

  2. Codeforces Beta Round #4 (Div. 2 Only)

    Codeforces Beta Round #4 (Div. 2 Only) A 水题 1 #include<bits/stdc++.h> 2 using namespace std; 3 ...

  3. 【Codeforces】Round #488 (Div. 2) 总结

    [Codeforces]Round #488 (Div. 2) 总结 比较僵硬的一场,还是手速不够,但是作为正式成为竞赛生的第一场比赛还是比较圆满的,起码没有FST,A掉ABCD,总排82,怒涨rat ...

  4. Codeforces Beta Round #75 (Div. 1 Only) B. Queue 线段树。单点更新

    http://codeforces.com/problemset/problem/91/B 题意: 给你n个数,求得i 到n中小于a[i]的最右边的a[j],然后求a[i]到a[j]之间包含了多少个数 ...

  5. Codeforces Beta Round #9 (Div. 2 Only) C. Hexadecimal's Numbers dfs

    C. Hexadecimal's Numbers 题目连接: http://www.codeforces.com/contest/9/problem/C Description One beautif ...

  6. Codeforces Round #383 (Div. 2) D. Arpa's weak amphitheater and Mehrdad's valuable Hoses —— DP(01背包)

    题目链接:http://codeforces.com/contest/742/problem/D D. Arpa's weak amphitheater and Mehrdad's valuable ...

  7. Codeforces Round #383 (Div. 1) C(二分图)

    一道很巧妙的二分图的题目 简单分析性质可知,一个合法序列一定是由12,21这样的子串构成的,所以相邻的每隔2个两两配对 然后BF和GF互相配对,思考一下,如果存在奇环,那么必定有一个BG有两个GF,或 ...

  8. Codeforces Round #383 (Div. 1): D. Arpa’s letter-marked tree…(dsu on tree+状压)

    题意: 给你一棵n个节点的树,每条边都代表着一个字母(a~v),对于每个节点u,求出以u为根的子树中有多少条路径满足:路径上的字符重新排列后可以得到一个回文字符串 思路: 前置:dsu on tree ...

  9. Codeforces Round #383 Div.2 A-E 题解

    A B C D E 这场题目不难,但是很有意思. A 求1378^n的个位数. 特判n=0n=0n=0的情况即可. int d[]={6,8,4,2}; int main(){ int n=read( ...

最新文章

  1. 束文圣和黄立南Nature综述极端环境中的微生物多样性
  2. mysql更新锁机制_mysql查询更新时的锁表机制分析
  3. 代码生成工具CodeSmith中SchemaExplorer类API文档[转]
  4. sql 删除重复记录保留一条_从零学会SQL·二——简单查询
  5. 数据挖掘领域十大经典算法
  6. SSL 2311-车厢调度[栈]
  7. [网络安全提高篇] 一〇二.Metasploit技术之基础用法万字详解及防御机理
  8. fiddler对手机进行抓包
  9. 孙叫兽进阶之路之敏捷开发
  10. 加速布局无服务器生态,腾讯云与Serverless.com达成全球战略合作!
  11. 【Shell教程】二----Shell变量,通配符,转义符
  12. Python数据挖掘笔记 七 .PCA降维操作及subplot子图绘制
  13. 滴滴自动驾驶首轮融资超5亿美元 加大研发投入 助力“新基建”
  14. Tecplot 安装记录
  15. 虚拟服务器搭建棋牌,棋牌开源游戏服务器框架
  16. 基于MATLAB的说话人语音识别声纹识别系统
  17. 企业微信管理员可以看到打卡位置吗
  18. php怎么画五星红旗,php基于GD库画五星红旗的方法_php技巧
  19. python实现ddos防护_python实现的防DDoS脚本
  20. 差分贴片晶振使最强军事武器出世

热门文章

  1. [深度学习-实战]LSTM Attention训练IMDB文本的情感分析
  2. oracle推式任务发料,Oracle EBS物料清单管理系统简介.pptx
  3. tensorflow越跑越慢_tensorflow sess.run()越来越慢的原因分析及其解决方法
  4. 【XCTF 攻防世界 web 练习详解系列(二)】【get_post的两种解法】
  5. 以企业面试讲解sql语句
  6. pandas isnull函数检查数据是否有缺失
  7. 数字图像处理--颜色选择
  8. Ubuntu下常用命令总结
  9. CREO - 基础2 - 如何让装配好的零件重新装配
  10. Android和Linux kernel发展史