SRM 593 Div1 L1:HexagonalBoard,用染色法判断无向图是否为二分图
2013-10-10 23:19
525 查看
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12784
最近由于考研,一个多月没有做TopCoder了,第一次参加Div1,结果第一题都没搞出来,看了社论之后学到了用DFS染色法判断无向图是否是二分图的方法。深刻感觉本人太水了,要加油!
代码如下:
最近由于考研,一个多月没有做TopCoder了,第一次参加Div1,结果第一题都没搞出来,看了社论之后学到了用DFS染色法判断无向图是否是二分图的方法。深刻感觉本人太水了,要加油!
代码如下:
#include <algorithm> #include <iostream> #include <sstream> #include <string> #include <vector> #include <stack> #include <deque> #include <queue> #include <set> #include <map> #include <cstdio> #include <cstdlib> #include <cctype> #include <cmath> #include <cstring> using namespace std; /*************** Program Begin **********************/ int dx[] = {0, -1, -1, 0, 1, 1}, dy[] = {-1, 0, 1, 1, 0, -1}; class HexagonalBoard { private: vector <string> board; int color[50][50]; int result, N; public: void DFS(int x, int y, int c) { int nx, ny; if ('X' == board[x][y] && -1 == color[x][y]) { color[x][y] = c; result = max(result, 1); for (int i = 0; i < 6; i++) { nx = x + dx[i]; ny = y + dy[i]; if (nx < 0 || nx > N-1 || ny < 0 || ny > N-1) { continue; } if ('X' == board[nx][ny]) { result = max(result, 2); DFS(nx, ny, !c); if (c == color[nx][ny]) { result = 3; } } } } } int minColors(vector <string> board) { this->board = board; memset(color, -1, sizeof(color)); result = 0; N = board.size(); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { DFS(i, j, 0); } } return result; } }; /************** Program End ************************/
相关文章推荐
- SRM 593 Div1 L1:HexagonalBoard,用染色法判断无向图是否为二分图
- NYOJ1015---二部图(判断是否是二分图:染色法)
- 染色法判断是否是二分图 hdu2444
- jquery如何判断div是否隐藏--useful
- uva 11396 爪分解,判断所给图是否能分解成爪,二分图判断
- jQuery 的 Div 标签滚动条属性及判断垂直滚动条是否到达底部
- 判断是否为二分图 染色法
- 如何判断鼠标是否在DIV的区域内
- jquery如何判断div是否隐藏
- jQuery 拖动div,判断拖动的div是否在一个div层上
- TC SRM 593 DIV1 250(dfs)
- HDU2444(判断是否为二分图,求最大匹配)
- jquery如何判断div是否隐藏
- JavaScript判断DIV内容是否为空的方法
- HDU2444-判断是否能构成二分图
- poj 3335 Rotating Scoreboard(判断多边形是否有核+半平面交)
- HDOJ 2444 - The Accomodation of Students 判断一个图是否是二分图.二分图的条件
- jQuery 的 Div 标签滚动条属性及判断垂直滚动条是否到达底部
- UVA 10004判断一个图是否为二分图
- 判断是否为二分图