codeforces741C Arpa’s overnight party and Mehrdad’s silent entering(二分图)
题意:
有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(二分图)相关推荐
- CF - 741(C. Arpa’s overnight party and Mehrdad’s silent entering) 二分图构造
题目链接 题意 已经给出情侣的座位编号,将两种饭分配给N对情侣.满足以下两个要求: 情侣之间不能吃相同的饭 座位号连续的三个人不能吃同一种饭 问是否存在满足的解. 思路 构造二分图 对应情侣的座位建边 ...
- 图论(二分图构造) ---- 二分图的性质 C. Arpa’s overnight party and Mehrdad’s silent entering
题目大意: 有 nnn 对情侣坐在 2n2n2n 个板凳上,板凳排成环形.每张凳子恰好坐一个人. 现在有两种食物分给他们.规定: 1.每对情侣中,俩人不能分到同一种食物: 2.环上任意三个相邻的人,不 ...
- CF741C Arpa’s overnight party and Mehrdad’s si
题目描述: 有n对情侣(2n个人)围成一圈坐在桌子边上,每个人占据一个位子,要求情侣不能吃同一 种食物,并且桌子上相邻的三个人的食物必须有两个人是不同的,只有两种食物(1或者是2),问一种可行分配方式 ...
- 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的 ...
- 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 思路: 树上启发式合并 从根节点出发到每个位置的每个字符的奇偶性记为每个位 ...
- 【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 ...
- 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 ...
- 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 ...
- 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 ...
最新文章
- 《OpenCV3编程入门》学习笔记2 启程前的认知准备
- linux孤立cpu,Linux 抛弃旧款 CPU,一下子少 50 万行代码
- R安德森-达令检验( Anderson-Darling Test)
- Kotlin 一个好用的新功能:Parcelize
- 强化学习(三)---马尔科夫决策过程
- 集成电路设计专业视频集(一)
- 从零开始刷Leetcode——数组(1.26)
- 滚动条----SCROLLBAR
- 数据库基础入门知识总结
- C#.Net网络程序开发-Socket篇(转)
- 从linaro下载安装二进制文件安装交叉编译工具
- OBLOG4.0+DVBBS7.10 SP1整合
- 共享的计算机用户账户限制,共享问题:登录失败: 用户帐户限制
- Vue 关闭浏览器清除Cookies
- 树莓派-10-安装jupyter并控制SG90舵机
- 2021-10-09
- Linux输入命令不显示
- 隐藏的Word快捷键操作
- uboot配置,编译,移植
- truct in6_addr has no member named in6_u
热门文章
- linux rsync 原理,rsync 同步原理和类别
- win2012每次启动显示服务器管理器,win2012r2服务器管理器打开角色.功能出错
- html数据分析表格api_Python数据分析基本库——Matplotlib(一)
- 中国黄金行业投资需求与收益预测报告2022年版
- php根据IP获取所有地,腾讯IP API
- Python 中的*args和**kwargs
- golang-flag的问题
- java与js交互,相互调用传参
- 百度网盘API调用二
- moment.js 常用(几天前、相差几天、自然周、自然月)