problemscpp
A collection of my answers to algorithm problems in c++.
静态 Public 成员函数 | 所有成员列表
acwing::acwing4216类 参考

AcWing 4216. 图中的环 更多...

#include <acwing.h>

静态 Public 成员函数

static int main (istream &cin, ostream &cout)
 

详细描述

AcWing 4216. 图中的环

在文件 acwing.h894 行定义.

成员函数说明

◆ main()

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

在文件 acwing.cpp2654 行定义.

2654 {
2655 unsigned short n;
2656 unsigned short m;
2657 unsigned short a;
2658 unsigned short b;
2659 cin >> n >> m;
2660 auto flag = vector(n, false);
2661 auto edge = vector(n, unordered_set<unsigned short>());
2662 for(unsigned short i = 0; i < m; i++) {
2663 cin >> a >> b;
2664 edge[a - 1].insert(b - 1);
2665 edge[b - 1].insert(a - 1);
2666 }
2667 int circle = 0;
2668 auto que = queue<pair<unsigned short, unsigned short>>();
2669 que.push(pair(0, 0));
2670 flag[0] = true;
2671 while(!que.empty()) {
2672 auto [prev, current] = que.front();
2673 que.pop();
2674 for(auto next: edge[current]) {
2675 if(next != prev) {
2676 if(flag[next]) {
2677 if(circle == 2) {
2678 cout << "NO";
2679 return 0;
2680 }
2681 circle += 1;
2682 } else {
2683 que.push(pair(current, next));
2684 flag[next] = true;
2685 }
2686 }
2687 }
2688 }
2689 for(unsigned short i = 0; i < n; i++) {
2690 if(!flag[i]) {
2691 cout << "NO";
2692 return 0;
2693 }
2694 }
2695 if(circle != 2) {
2696 cout << "NO";
2697 return 0;
2698 }
2699 cout << "YES";
2700 return 0;
2701 }

被这些函数引用 acwing::TEST().


该类的文档由以下文件生成: