题意:

有 n 个点和 m 条边,对点进行染色。要求一条边的两个点不能都染色,并且删除两端都没有染色的边之后,图连通。请给出一种染色方案。

题解:

第一反应就是01染色,但是题目是有可能存在奇环的,那怎么办?
01染色是保证1和1,0和0都不能相邻,如果把1当做染色,根据本题,0是可以相邻的,那我们把01染色的dfs改成bfs的形式,也就是与1相邻的点都是0,然后对于每个0,所能到的下一个点就是1,然后对1操作,1的周围都是0,这样循环进行就可以
BFS遍历所有的点。

  1. 如果当前节点没有染色,且相邻的所有节点没有染色,就染色,否则不染色。
  2. 如果当前节点已经染色,那么把相邻的所有节点标记不染色。
    证明:显然这种方案不会存在一条边的两端都染色的情况,并且如果图不连通,一定是有一个点连接的所有点都不染色,而这样的点一定会在第一种情况下被染色,所以图一定是连通的。
    当然如果图本身就不连通直接输出NO
    u1s1,div2的F题比我想象的要简单多

代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<queue>
#include<map>
using namespace std;
#define LL long long
#define eps (1e-8)
const int maxn = 3e5 + 10;
const int inf = 0x3f3f3f3f;
const LL mod = 1e9 + 7;
struct node
{int v, nxt;
}e[maxn << 1];
int head[maxn], cnt;
void add(int u, int v)
{e[++cnt].v = v;e[cnt].nxt = head[u];head[u] = cnt;
}
int vis[maxn];//标记为1是染色,0位不染色,-1位还未遍历的点
queue<int>q;
void bfs(int u)
{vis[u] = 1;for (int i = head[u]; i; i = e[i].nxt){int v = e[i].v;// if (vis[v] == -1){vis[v] = 0; q.push(v);//存的都是不染色的点}}
}
void solve()
{while (!q.empty()){int u = q.front();q.pop();for (int i = head[u]; i; i = e[i].nxt){int v = e[i].v;//v为染色点 if (vis[v] == -1){bfs(v);}}}
}
int main()
{int t;scanf("%d", &t);while (t--){cnt = 0;int n, m;scanf("%d%d", &n, &m);for (int i = 0; i <= n; i++){head[i] = 0;vis[i] = -1;}int u, v;while (m--){scanf("%d%d", &u, &v);add(u, v), add(v, u);}bfs(1);solve();int flag = 1, ans = 0;for (int i = 1; i <= n; i++){if (vis[i] == 1)ans++;else if (vis[i] == -1)//说明有的点没有遍历到,图不连通 {flag = 0;}}if (flag){printf("YES\n");printf("%d\n", ans);for (int i = 1; i <= n; i++){if (vis[i] == 1)printf("%d ", i);}printf("\n");}else{printf("NO\n");}}return 0;
}

Strange Housing CodeForces - 1471F相关推荐

  1. Codeforces Round #694 (Div. 2) F. Strange Housing (贪心思维)

    F. Strange Housing 题意 有 nnn 个点和 mmm 条边,对点进行染色.要求一条边的两个点不能都染色,并且删除两端都没有染色的边之后,图连通.请给出一种染色方案. 题解 暴力贪心即 ...

  2. Strange Partition CodeForces - 1471A

    Strange Partition CodeForces - 1471A 题意: 对于数组b可以两两合并其中的相连元素,beauty值就是对于数组b中的b[i]除以k向上取整的和,求出beauty值的 ...

  3. Strange List CodeForces - 1471B

    题意: 对于长度为n的数组a,从第一位开始如果可以整除x,就将x个a/x的结果加到数组最后,然后对下一位进行一样的操作,直到第x位不可以整除x,到此结束,然后计算此时数组的总和 题解: 最直接的方法就 ...

  4. Strange Shuffle CodeForces - 1471E(交互题)

    交互题 这类型不同于普通的题. 可以理解为有个问题需要你解决,你通过输入某些东西表示你要问系统的问题,这时系统会回答你的问题.在代码中的回答方式就是会输入某个东西就是系统给你的答案,通过这些信息你可以 ...

  5. Strange Definition CodeForces - 1471D

    题意: 定义数字 x 和 y 是"相邻"的当且仅当 lcm(x,y)/gcd(x,y) 是一个平方数. 给定一个长度为 n 的数组 a. 每过一秒,数组 a 会发生变化:ai 会变 ...

  6. AquaMoon and Strange Sort CodeForces - 1546C(思维)

    题目链接 题意 现在从左到右有 n 个元素,现在我们是否可以通过进行任意次操作,使这个序列变成非递减?对于依次操作,我们可以选择两个相邻的元素交换位置,并且每个元素如果被交换就一定要交换偶数次(可以是 ...

  7. Codeforces Round #694 Div. 2

    Codeforces Round #694 Div. 2 CodeForces 1471A Strange Partition CodeForces 1471B Strange List CodeFo ...

  8. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

  9. (6/6) Codeforces Round #694 (Div. 2)

    (6/6) Codeforces Round #694 (Div. 2) A. Strange Partition 题意: 给一个数组,数组中的所有元素可以任意合并,求数组的每个元素除以x上去整的和, ...

最新文章

  1. java字符串逐个分解_改进JAVA字符串分解的方法
  2. CSS实现文字环绕图片
  3. 硬核! 逛了4年Github ,一口气把我收藏的 Java 开源项目分享给你
  4. view.performClick()触发点击事件
  5. SAP Customer Data Cloud(Gigya)的用户搜索实现 1
  6. LintCode 1652. 区间异或 II
  7. 【线性代数本质】4:矩阵乘法本质
  8. PHP中 htmlspecialchars,htmlentities, nl2br函数
  9. Velocity教程 (zhuan)
  10. 学习linux中踩的坑,踩踩Linux命令中的那些坑
  11. 学界 | Hinton提出的经典防过拟合方法Dropout,只是SDR的特例
  12. 字母串按照字典序排序
  13. Xenko C#开源游戏引擎
  14. ImgBurn - 简单免费的 CD/DVD 刻录软件
  15. 天呐,你竟然在配置文件配明文密码?
  16. web-登陆界面html-数据库
  17. 完美解决failed to open stream: HTTP request failed!(file_get_contents引起的)
  18. GitHub中国区前100名到底是什么样的人?
  19. SIGBUS:BUS_ADRERR for stack access violation in memcpy
  20. lua脚本PHP加密网站源码,【几维安全】lua脚本加密,lua代码加密使用说明

热门文章

  1. 颠覆认知!完美赌徒,到底是如何用数学打造经济神话?!
  2. 老师“鬼话”全曝光!哈哈哈哈哈哈全国的老师都这样吗?
  3. java2的7次方怎么表示_静态市盈率要怎么看?
  4. 多个查询语句能否一次把结果导出_mysql表中base64格式数据查询
  5. 手把手教你用Java的swing制作计算器
  6. java.awt.headless_以编程方式设置java.awt.headless = true
  7. java junit4_JUnit4使用Java5中的单元测试
  8. android textview动态设置,android – 如何动态设置文本到TextView?
  9. python数据分析与展示 pdf课件_python数据分析与展示 课件 相关实例(示例源码)下载 - 好例子网...
  10. c++经典编程题_全国青少年软件编程等级考试C语言经典程序题10道十