problemscpp
A collection of my answers to algorithm problems in c++.
函数
acwing::acwing860 命名空间参考

  1. 染色法判定二分图
更多...

函数

bool dfs (vector< unordered_set< int > > &g, int node, vector< int > &color, int c)
 
int main (istream &cin, ostream &cout)
 
 TEST (acwing859, case1)
 
 TEST (acwing859, case2)
 

详细描述

  1. 染色法判定二分图

函数说明

◆ dfs()

bool acwing::acwing860::dfs ( vector< unordered_set< int > > &  g,
int  node,
vector< int > &  color,
int  c 
)

在文件 acwing.cpp7481 行定义.

7481 {
7482 color[node] = c;
7483 for(const auto sibling: g[node]) {
7484 if(color[sibling] == 3) {
7485 if(!dfs(g, sibling, color, c == 0)) {
7486 return false;
7487 }
7488 } else if(color[sibling] == c) {
7489 return false;
7490 }
7491 }
7492 return true;
7493 }
bool dfs(vector< unordered_set< int > > &g, int node, vector< int > &color, int c)
Definition: acwing.cpp:7481

引用了 dfs().

被这些函数引用 dfs() , 以及 main().

◆ main()

int acwing::acwing860::main ( istream &  cin,
ostream &  cout 
)

在文件 acwing.cpp7456 行定义.

7456 {
7457 int n;
7458 int m;
7459 cin >> n >> m;
7460 vector g(n + 1, unordered_set<int>());
7461 vector color(n + 1, 3);
7462 for(int i = 0; i < m; i++) {
7463 int u;
7464 int v;
7465 cin >> u >> v;
7466 g[u].insert(v);
7467 g[v].insert(u);
7468 }
7469 for(int i = 1; i <= n; i++) {
7470 if(color[i] == 3) {
7471 if(!dfs(g, i, color, 0)) {
7472 cout << "No";
7473 return 0;
7474 }
7475 }
7476 }
7477 cout << "Yes";
7478 return 0;
7479 }

引用了 dfs().

被这些函数引用 TEST().

◆ TEST() [1/2]

acwing::acwing860::TEST ( acwing859  ,
case1   
)

在文件 acwing_test.cpp3578 行定义.

3578 {
3579 istringstream in("4 4\n"
3580 "1 3\n"
3581 "1 4\n"
3582 "2 3\n"
3583 "2 4");
3584 auto out = ostringstream();
3585 main(in, out);
3586 const auto ans = out.str();
3587 ASSERT_EQ("Yes", ans);
3588 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().

◆ TEST() [2/2]

acwing::acwing860::TEST ( acwing859  ,
case2   
)

在文件 acwing_test.cpp3590 行定义.

3590 {
3591 istringstream in("7 7\n"
3592 "1 3\n"
3593 "1 4\n"
3594 "2 3\n"
3595 "2 4\n"
3596 "5 6\n"
3597 "6 7\n"
3598 "5 7");
3599 auto out = ostringstream();
3600 main(in, out);
3601 const auto ans = out.str();
3602 ASSERT_EQ("No", ans);
3603 }

引用了 main().