题意:

有2n个人围成一圈坐在桌子边上,每个人占据一个位子,对应这2n个人是n对情侣,要求情侣不能吃同一种食物,并且桌子上相邻的三个人的食物必须有两个人是不同的,只有两种食物(1或者是2),问一种可行分配方式。

要点:

想不出来,后来看了网上的题解豁然开朗,题目要求情侣颜色不一样所以将情侣之间连无向边,然后要求连续三个人不能一样,那就干脆连续两个人都不一样,将第2*i-1与2*i个人之间连边,这样还不用考虑环的问题,最后就是一个二分图,然后直接dfs染色即可。这题最重要的是连续三个人不一样转换为连续两个人不一样,后者可能无法满足,但是这样dfs下来是肯定可以满足前者的,也就是前者是必成立的,可以证明,所以最后不可能输出-1

#include<iostream>
#include<string>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 1e5 + 50;
vector<int> adj[2*maxn];
int l[maxn], r[maxn],c[2*maxn];
bool vis[2 * maxn];void addedge(int u, int v)
{adj[u].push_back(v);adj[v].push_back(u);
}
void dfs(int u, int color)
{vis[u] = true;c[u] = color;for (int i = 0; i < adj[u].size(); i++){int v = adj[u][i];if (!vis[v])dfs(v, color == 1 ? 2 : 1);}
}int main()
{int n;scanf("%d", &n);for (int i = 1; i <= n; i++){scanf("%d%d", &l[i], &r[i]);addedge(l[i], r[i]);addedge(2 * i - 1, 2 * i);}memset(vis, false, sizeof(vis));for (int i = 1; i <= 2 * n; i++)if (!vis[i])dfs(i, 1);for (int i = 1; i <= n; i++)printf("%d %d\n", c[l[i]], c[r[i]]);return 0;
}

转载于:https://www.cnblogs.com/seasonal/p/10343649.html

codeforces741C Arpa’s overnight party and Mehrdad’s silent entering(二分图)相关推荐

  1. CF - 741(C. Arpa’s overnight party and Mehrdad’s silent entering) 二分图构造

    题目链接 题意 已经给出情侣的座位编号,将两种饭分配给N对情侣.满足以下两个要求: 情侣之间不能吃相同的饭 座位号连续的三个人不能吃同一种饭 问是否存在满足的解. 思路 构造二分图 对应情侣的座位建边 ...

  2. 图论(二分图构造) ---- 二分图的性质 C. Arpa’s overnight party and Mehrdad’s silent entering

    题目大意: 有 nnn 对情侣坐在 2n2n2n 个板凳上,板凳排成环形.每张凳子恰好坐一个人. 现在有两种食物分给他们.规定: 1.每对情侣中,俩人不能分到同一种食物: 2.环上任意三个相邻的人,不 ...

  3. CF741C Arpa’s overnight party and Mehrdad’s si

    题目描述: 有n对情侣(2n个人)围成一圈坐在桌子边上,每个人占据一个位子,要求情侣不能吃同一 种食物,并且桌子上相邻的三个人的食物必须有两个人是不同的,只有两种食物(1或者是2),问一种可行分配方式 ...

  4. CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths

    CF741D Arpa's letter-marked tree and Mehrdad's Dokhtar-kosh paths 好像这个题只能Dsu On Tree? 有根树点分治 统计子树过x的 ...

  5. Codeforces 741 D - Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths

    D - Arpa's letter-marked tree and Mehrdad's Dokhtar-kosh paths 思路: 树上启发式合并 从根节点出发到每个位置的每个字符的奇偶性记为每个位 ...

  6. 【Codeforces 741 B. Arpa's weak amphitheater and Mehrdad's 】+ 并查集 + 01背包

    B. Arpa's weak amphitheater and Mehrdad's valuable Hoses time limit per test 1 second memory limit p ...

  7. 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 ...

  8. Codeforces 742B B. Arpa’s obvious problem and Mehrdad’s terrible solution

    B. Arpa's obvious problem and Mehrdad's terrible solution time limit per test 1 second memory limit ...

  9. Codeforces 742A Arpa’s hard exam and Mehrdad’s naive cheat 打表+水题

    A. Arpa's hard exam and Mehrdad's naive cheat time limit per test 1 second memory limit per test 256 ...

最新文章

  1. 《OpenCV3编程入门》学习笔记2 启程前的认知准备
  2. linux孤立cpu,Linux 抛弃旧款 CPU,一下子少 50 万行代码
  3. R安德森-达令检验( Anderson-Darling Test)
  4. Kotlin 一个好用的新功能:Parcelize
  5. 强化学习(三)---马尔科夫决策过程
  6. 集成电路设计专业视频集(一)
  7. 从零开始刷Leetcode——数组(1.26)
  8. 滚动条----SCROLLBAR
  9. 数据库基础入门知识总结
  10. C#.Net网络程序开发-Socket篇(转)
  11. 从linaro下载安装二进制文件安装交叉编译工具
  12. OBLOG4.0+DVBBS7.10 SP1整合
  13. 共享的计算机用户账户限制,共享问题:登录失败: 用户帐户限制
  14. Vue 关闭浏览器清除Cookies
  15. 树莓派-10-安装jupyter并控制SG90舵机
  16. 2021-10-09
  17. Linux输入命令不显示
  18. 隐藏的Word快捷键操作
  19. uboot配置,编译,移植
  20. truct in6_addr has no member named in6_u

热门文章

  1. linux rsync 原理,rsync 同步原理和类别
  2. win2012每次启动显示服务器管理器,win2012r2服务器管理器打开角色.功能出错
  3. html数据分析表格api_Python数据分析基本库——Matplotlib(一)
  4. 中国黄金行业投资需求与收益预测报告2022年版
  5. php根据IP获取所有地,腾讯IP API
  6. Python 中的*args和**kwargs
  7. golang-flag的问题
  8. java与js交互,相互调用传参
  9. 百度网盘API调用二
  10. moment.js 常用(几天前、相差几天、自然周、自然月)