Codeforces Round #805 (Div. 3)E.Split Into Two Sets
题目链接:https://codeforces.ml/contest/1702/problem/E
题目大意:
每张牌上面有两个数字,现在有n张牌(n为偶数),问能否将这n张牌分成两堆,使得每堆牌中的数字不重复;
因为需要每堆牌不重复,那牌中的数字必须满足:
1.每个数字出现的次数刚好为2
2.同一张牌上出现的数字不同
因为每张牌上有两个数字,所以我们可以将每张牌连成一个环,然后对每张牌进行涂色,如果包含相同数字的牌被涂成了相同的颜色,
说明无论如何都不可能分为两堆;
1 # include<iostream>
2 # include<bits/stdc++.h>
3 using namespace std;
4 # define int long long
5 # define endl "\n"
6 const int N = 2e5 + 10;
7 vector<int> g[N],vec[N];
8 bool vis[N];
9 int col[N];
10 bool ok = true;
11 void dfs(int u){
12 vis[u] = 1;
13 for(auto v:g[u]){
14 if(!vis[v]){/*如果尚未涂色,那就涂成与上一张牌不同的颜色,因为每条边连的是包含相同数字的牌*/
15 col[v] = 1-col[u];
16 dfs(v);
17 }
18 else if(col[v] == col[u]) ok = false;
19 }
20 }
21
22 void solve() {
23 int n;
24 ok = true;
25 cin>>n;
26 for(int i = 1;i <= n;++i)g[i].clear(),vec[i].clear(),vis[i] = 0;
27 for(int i = 1;i <= n;++i){
28 int a,b;
29 cin>>a>>b;
30 vec[a].push_back(i);
31 vec[b].push_back(i);/*记录每个数字在第几张牌上*/
32 if(a==b) ok = false;/*同一张牌上的数字不同*/
33 }
34 for(int i = 1;i <= n;++i) if(vec[i].size()!=2) ok =false;/*每个数字出现的次数刚好为2*/
35 if(!ok){
36 cout<<"NO"<<endl;
37 return;
38 }
39 for(int i = 1;i <= n;++i){
40 int u = vec[i][0],v = vec[i][1];
41 g[u].push_back(v);
42 g[v].push_back(u);/*将包含相同数字的牌连起来*//*例如:{1,2}->{2,3}->{3,5}*/
43 }
44 for(int i = 1;i <= n;++i){
45 if(!vis[i]){
46 col[i] = 1;/*涂色*/
47 dfs(i);
48 }
49 }
50 if(ok) cout<<"YES"<<endl;
51 else cout<<"NO"<<endl;
52
53
54 }
55 int tt;
56 signed main() {
57 ios::sync_with_stdio(false);
58 cin.tie(0);
59 cout.tie(0);
60 cin >> tt;
61 while (tt--)solve();
62
63 return 0;
64 }
69
70
71 */
Codeforces Round #805 (Div. 3)E.Split Into Two Sets的更多相关文章
- Codeforces Round #433 (Div. 2)【A、B、C、D题】
题目链接:Codeforces Round #433 (Div. 2) codeforces 854 A. Fraction[水] 题意:已知分子与分母的和,求分子小于分母的 最大的最简分数. #in ...
- Codeforces Round #292 (Div. 1)A. Drazil and Factorial 构造
A. Drazil and Factorial 题目连接: http://codeforces.com/contest/516/problem/A Description Drazil is play ...
- B. Ohana Cleans Up(Codeforces Round #309 (Div. 2))
B. Ohana Cleans Up Ohana Matsumae is trying to clean a room, which is divided up into an n by n gr ...
- B. The Number of Products(Codeforces Round #585 (Div. 2))
本题地址: https://codeforces.com/contest/1215/problem/B 本场比赛A题题解:https://www.cnblogs.com/liyexin/p/11535 ...
- Codeforces Round #517 (Div. 2)(1~n的分配)
题:https://codeforces.com/contest/1072/problem/C 思路:首先找到最大的x,使得x*(x+1)/2 <= a+b 那么一定存在一种分割使得 a1 &l ...
- 贪心+构造( Codeforces Round #344 (Div. 2))
题目:Report 题意:有两种操作: 1)t = 1,前r个数字按升序排列: 2)t = 2,前r个数字按降序排列: 求执行m次操作后的排列顺序. #include <iostream&g ...
- Codeforces Round #516 (Div. 2)D. Labyrinth(BFS)
题目链接:http://codeforces.com/contest/1064/problem/D 题目大意:给你一个n*m的图,图中包含两种符号,'.'表示可以行走,'*'表示障碍物不能行走,规定最 ...
- Codeforces Round #281 (Div. 2) A. Vasya and Football 模拟
A. Vasya and Football 题目连接: http://codeforces.com/contest/493/problem/A Description Vasya has starte ...
- 【CodeForces】841C. Leha and Function(Codeforces Round #429 (Div. 2))
[题意]定义函数F(n,k)为1~n的集合中选择k个数字,其中最小数字的期望. 给定两个数字集A,B,A中任意数字>=B中任意数字,要求重组A使得对于i=1~n,sigma(F(Ai,Bi))最 ...
随机推荐
- linux 3个快捷方式
Ctrl+c组合键:当同时按下键盘上的Ctrl和字母c的时候,意味着终止当前进程的运行.假如执行了一个错误命令,或者是执行某个命令后迟迟无法结束,这时就可以冷静地按下Ctrl+c组合键,命令行终端的控 ...
- MySQL索引知识点&面试常见问题
来源:BiggerBoy 作者:北哥 原文链接:https://mp.weixin.qq.com/s/fucHvdRK5wRrDfBOo6IBGw 大家好我是北哥,今天整理了MySQL索引相关的知识点 ...
- 第五十三篇:Vue安装Element ui
好家伙,之前写的一篇过时了,用不了了,更新一波 (已新建一个vue项目) 1. 在项目目录下执行:npm i element-ui -S 2. 在main.js中写入 import ElementUI ...
- python超多常用知识记录
在函数传参给变量**a,可以接收字典类型,当未传参默认空字典 set创建集合可以排重 while和for到参数未满足可以增加else cmp函数比较长度 divmod函数返回除数和余数结果 nonlo ...
- 【设计模式】Java设计模式 - 观察者模式
[设计模式]Java设计模式 - 观察者模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 @一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长 ...
- MAC Golang环境搭建
1. 下载golang 下载地址:https://golang.google.cn/dl/ 根据MAC左上角苹果图标->关于本机,即可查看芯片类型 2. 安装golang 在 下载 中双击 下载 ...
- Java String Pool--String s = new String("a") 到底创建了几个对象?
本篇重点(tips): 1. String Pool 是以Java 中 String 对象是不可变的这一特性为基础的 2. String Pool是Heap(堆)中的一块特殊空间(JDK 1.7 之前 ...
- Java SE 6、super关键字,包
1.super关键字 super代表父类的引用,用于访问父类的属性,方法,构造器 super可以访问父类的属性,但不能访问父类的 private 属性 super.属性名; 可以访问父类的方法,不能访 ...
- 第六章:Django 综合篇 - 11:分页 Paginator
分页功能是几乎所有的网站上都需要提供的功能,当你要展示的条目比较多时,必须进行分页,不但能减小数据库读取数据压力,也有利于用户浏览. Django又很贴心的为我们提供了一个Paginator分页工具, ...
- logstash中output{}的另类写法
日志传输路径如下: filebeat->redis->logstash->es 在filebeat配置文件中,收集日志的时候配置的有如下参数: fields: log_source: ...