https://codeforc.es/contest/1176/problem/E

久了不写bfs了。一开始用dfs写,的确用dfs是很有问题的,一些奇怪的情况就会导致多染一些色。

注意无向图的边要开双倍。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;int n, m;struct Edge {int u, v;int next;Edge() {}Edge(int u, int v, int next): u(u), v(v), next(next) {}
};struct Graph {Edge edge[400005];int head[200005], etop;void init(int n) {etop = 0;memset(head + 1, -1, sizeof(head[1])*n);}void add_edge(int u, int v) {edge[++etop] = Edge(u, v, head[u]);head[u] = etop;edge[++etop] = Edge(v, u, head[v]);head[v] = etop;}
} g;bool visited[200005];
bool color[200005];
int dis[200005];int que[200005];
int qhead, qtail;int cntodd, cnteven;void enqueue(int id, int d) {if(visited[id])return;visited[id] = true;dis[id] = d;if(d & 1)cntodd++;elsecnteven++;que[++qtail] = id;
}void bfs() {memset(visited + 1, false, sizeof(visited[1])*n);qhead = 1, qtail = 0;cntodd = 0, cnteven = 0;enqueue(1, 0);while(qhead <= qtail) {int u = que[qhead++];for(int i = g.head[u]; i != -1; i = g.edge[i].next) {enqueue(g.edge[i].v,dis[u]+1);}}
}int main() {
#ifdef Yinkufreopen("Yinku.in", "r", stdin);//freopen("Yinku.out", "w", stdout);
#endif // Yinkuint t;while(~scanf("%d", &t)) {while(t--) {scanf("%d%d", &n, &m);g.init(n);for(int i = 1; i <= m; i++) {int u, v;scanf("%d%d", &u, &v);g.add_edge(u, v);}bfs();int ch = 0;if(cntodd <= cnteven)ch = 1;int cnt = 0, last = -1;for(int i = 1; i <= n; i++) {if((dis[i] & 1) == ch) {cnt++;last = i;}}printf("%d\n", cnt);for(int i = 1; i <= n; i++) {if((dis[i] & 1) == ch) {printf("%d", i);if(i == last) {printf("\n");break;} else {printf(" ");}}}}}
}

转载于:https://www.cnblogs.com/Yinku/p/11217093.html

Codeforces - 1176E - Cover it! - bfs相关推荐

  1. CodeForces - 1534E Lost Array(bfs+交互)

    题目链接:点击查看 题目大意:初始时给出一个长度为 nnn 的序列,每次可以询问 kkk 个位置的异或和,现在需要以最少的询问获得整个序列的异或和 题目分析:因为是异或,我们只关心每个位置被询问的次数 ...

  2. CodeForces - 1484D Playlist(循环链表+bfs)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,规定其是一个首尾相接的环,不断的遍历该环,如果满足 gcd(ai,ai+1)==1gcd(a_i,a_{i+1})==1gcd(ai​,a ...

  3. CodeForces - 1301F Super Jaber(bfs)

    题目链接:点击查看 题目大意:给出一个n*m的矩阵,每个点都有一个颜色,颜色的种类不超过40种,如果想从一个点到达另一个点,有两种方法: 花费一个单位的时间从某种颜色闪现到相同的颜色 花费一个单位的时 ...

  4. Orac and Game of Life CodeForces - 1350E(思维+BFS)

    Please notice the unusual memory limit of this problem. Orac likes games. Recently he came up with t ...

  5. Valid BFS? CodeForces - 1037D(思维 bfs)

    我真是一只菜狗......emm... 题意: 判断一个从1开始的队列是否可以按照bfs的顺序 进行遍历..必须从1开始...然后后边依次是bfs顺序 解析: 看代码能看懂吧...emm...就是把每 ...

  6. codeforces gym-101741 Cover the Paths LCA、离线询问

    题目 题目链接 题意 给出一棵树. 给出一堆路径,找出最少一个最少的点的集合,使得所有的路径都经过集合中的至少一个点. 题解 考虑一个路径的两个端点,从下往上最后一个能被经过的点就是这两点的LCA. ...

  7. CodeForces - 796D Police Stations bfs

    思路:删除尽量多的边使得所有点都能在限制距离之内到达一个警局,删除边会形成多棵子树,最多只能k棵.其实就是以每个警局为根结点,把整棵树划分为以警局为根结点的k棵树,说明要删除的边的数量就是k-1条,即 ...

  8. 2020 BUPT Winter Training #1 Div.1

    2020 BUPT Winter Training #1 Div.1 这些题真的很不错 读完题一道都不会 补完每一道都骂自己sb 文章目录 [A - Cover it!](https://vjudge ...

  9. Codeforces Round #361 (Div. 2) B. Mike and Shortcuts bfs

    B. Mike and Shortcuts 题目连接: http://www.codeforces.com/contest/689/problem/B Description Recently, Mi ...

最新文章

  1. Swift_错误处理
  2. richTextBox1 转到行号
  3. oracle ogg00423,ogg实现Oracle到SQL Server 2005的同步
  4. 手把手教你捕获数据包
  5. spring 点击保存按钮页面禁用_用一篇深度好文,详解按钮的设计
  6. 你必须知道的 SmartSql
  7. Kali linux 渗透测试技术之搭建WordPress Turnkey Linux及检测WordPress 应用程序漏洞
  8. 签约沈腾,易车开启三年品牌计划,穿越车市寒冬
  9. python数据分析报告范文_Python数据实战分析之定量和定性数据分析
  10. 毫秒间完成行为分析,飞猪端智能技术实践!
  11. linux 安装org2pg_Ora2Pg的安装和使用
  12. [USACO13OPEN]What's Up With Gravityp【最短路 / SPFA】
  13. 将.npy文件转.txt文件
  14. PMP培训一般是多久?怎么收费?
  15. jvm虚拟机规范官方文档入口
  16. 我是如何完美解决WIN10崩溃无法自动恢复启动问题的
  17. PTA习题【python】 6-8 jmu-python-发牌
  18. android的随机之魂
  19. python求平均值,python 怎么求平均值
  20. 小Y看浮屠世界-往复式单螺杆混炼挤出机构造特征及其运用

热门文章

  1. 螃蟹先生2 android,螃蟹先生2
  2. java滚动条调整数值_急..JAVA 在画布上画拖动滚动条可扩大缩小的长方形
  3. 程序员操作系统推荐_程序员的这些问题,竟然在工作后才发现!
  4. android 指南针传感器,android 传感器使用 Compass指南针的实现功能
  5. Qt5.x解决报错main.cpp:1:10: fatal error: QApplication: No such file or directory问题
  6. python控制结构是,python 程序控制结构
  7. c++多态与java多态性_Java中的多态性
  8. 什么是pytorch_什么是Pytorch?
  9. ios touch坐标_iOS 3D Touch –窥视与流行
  10. 更新sql语句 sql注入_SQL更新语句– SQL中的更新查询