练习题 No.22 二分图判定
来源:互联网 发布:暴雪彩票源码 编辑:程序博客网 时间:2024/06/01 10:29
要求
给定一个具体n个顶点的图。要给图上每个顶点染色,并且要使相邻的顶点的颜色不同。问是否能最多用2种颜色进行染色?题目保证没有重边和自环。
限制条件
- 1 <= n <= 1000
输入格式
第一行输入 n和e(边数)
接下来e行
每行输入开始边和结束边
输出格式
输出YES和NO
测试输入
4 4
0 3
0 1
1 2
2 3
测试输出
YES
解题思路
深度搜索每个顶点,并且进行交替染色即可。
代码
#include <iostream>#include <vector>using namespace std; class Vertex { public: vector<Vertex *> edge; int color; Vertex() { color = 0; }}; int V, E;Vertex g[101];bool dfs(Vertex &v, int c) { v.color = c; for (int i = 0; i < v.edge.size(); i++) { if (v.edge[i]->color == c) { return false; } else if (v.edge[i]->color == 0 && !dfs(*v.edge[i], -c)) { return false; } } return true;}int main() { cin >> V >> E; for (int i = 0; i < E; i++) { int s, t; cin >> s >> t; g[s].edge.push_back(&g[t]); } for (int i = 0; i < V; i++) { if (g[i].color == 0) { if (!dfs(g[i], 1)) { cout << "No" << endl; return 0; } } } cout << "YES" << endl; return 0; }
0 0
- 练习题 No.22 二分图判定
- p1403 二分+二分图判定
- 二分图判定
- 二分图判定
- 二分图的判定
- 二分图判定
- 二分图判定
- hihocorde:二分图判定
- 二分图判定
- 二分图判定
- 二分图判定
- 二分图的判定
- 二分图判定
- 二分图判定
- 二分图的判定
- 二分图的判定
- hdu4751(二分图判定)
- 二分图判定
- aJax跨域请求,Java服务端的处理办法
- Opencv使用环境配置
- STL关联容器之map
- 使用@RequestBody遇到的问题
- 无缝合并多个文件
- 练习题 No.22 二分图判定
- HDU 2717 Catch That Cow(bfs)
- A + B Again
- 从QString中获取被分隔字符串方法(Section()、split())
- 逻辑表达式
- BOOL WINAPI的实际意义
- Generative Adversarial Networks 生成对抗网络的简单理解
- 矩阵、向量求导法则
- Treasure the new start, freshmen!