题目链接: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的更多相关文章

  1. Codeforces Round #433 (Div. 2)【A、B、C、D题】

    题目链接:Codeforces Round #433 (Div. 2) codeforces 854 A. Fraction[水] 题意:已知分子与分母的和,求分子小于分母的 最大的最简分数. #in ...

  2. Codeforces Round #292 (Div. 1)A. Drazil and Factorial 构造

    A. Drazil and Factorial 题目连接: http://codeforces.com/contest/516/problem/A Description Drazil is play ...

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

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

  5. Codeforces Round #517 (Div. 2)(1~n的分配)

    题:https://codeforces.com/contest/1072/problem/C 思路:首先找到最大的x,使得x*(x+1)/2 <= a+b 那么一定存在一种分割使得 a1 &l ...

  6. 贪心+构造( Codeforces Round #344 (Div. 2))

    题目:Report 题意:有两种操作: 1)t = 1,前r个数字按升序排列:   2)t = 2,前r个数字按降序排列: 求执行m次操作后的排列顺序. #include <iostream&g ...

  7. Codeforces Round #516 (Div. 2)D. Labyrinth(BFS)

    题目链接:http://codeforces.com/contest/1064/problem/D 题目大意:给你一个n*m的图,图中包含两种符号,'.'表示可以行走,'*'表示障碍物不能行走,规定最 ...

  8. Codeforces Round #281 (Div. 2) A. Vasya and Football 模拟

    A. Vasya and Football 题目连接: http://codeforces.com/contest/493/problem/A Description Vasya has starte ...

  9. 【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))最 ...

随机推荐

  1. 有意思的方向裁切 overflow: clip

    本文将介绍一个新特性,从 Chrome 90 开始,overflow 新增的一个新特性 -- overflow: clip,使用它,轻松的对溢出方向进行控制. overflow: clip 为何 首先 ...

  2. 【manim】3b1b的"Almost" Fourier Transform复刻

    最近在做Fourier Transform的内容,记录一下今天下午的成果. 本文代码全部自行编写,需要math and music项目完整工程可以在gayhub上获取.(现在还没弄完,就先不发了.) ...

  3. HOSMEL:一种面向中文的可热插拔模块化实体链接工具包

    HOSMEL: A Hot-Swappable Modularized Entity Linking Toolkit for Chinese ACL 2022 论文地址:https://aclanth ...

  4. 基于Vue的前端UI组件库的比对和选型

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 由于录制视频的需要,要做前端UI组件库的选型.平时国内外也见了不少基于Vue的UI ...

  5. 使用man手册查看内核函数

    1.为避免man的一些功能缺失,先装好manpages-dev sudo apt-get install manpages-dev 2.安装mandocs的依赖包xmlto sudo apt-get ...

  6. idea每次换行后光标都跑到最左边问题

    最进用idea时发现每次换行之后一段时间光标会自动跑到最左边,默认把我的首行空格删掉了 IDEA版本为:IntelliJ IDEA 2020.2.3 x64

  7. [LeetCode]-217.存在重复元素-简单

    217. 存在重复元素 给定一个整数数组,判断是否存在重复元素. 如果存在一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false . 示例 1: 输入: [1, ...

  8. Java的lamda表达式/函数式接口/流式计算

    在我们看他人code的时候经常会看到,可能会经常看到lambda表达式,函数式接口,以及流式计算.在刚接触这些新功能时,也觉得真的有必要吗?但是现在写多了,发现这个功能确实能简化代码结构,提升编码效率 ...

  9. CentOS7使用tar方式安装Containerd,配置文件介绍

    主机:centos 7.9 下载 官网GitHub上下载地址:https://github.com/containerd/containerd/releases 问题: 创建容器后,运行的时候报错: ...

  10. ERP 系统最重要的是什么?

    ERP系统最重要的就是内部业务逻辑,这也是ERP复杂.专业性的体现!ERP系统可以算是当今最复杂的应用系统,也是最昂贵的,头部厂商一套系统动辄上千万,实施费用也常常达到千万级,实施周期动辄半年一年的, ...