点割集

 1 # include <iostream>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5 const int N = 100;
 6 int num[N], flag[N], low[N], root, V, E, index = 0, e[N][N];
 7 void dfs(int cur, int father) {
 8     int child = 0;
 9     index++;
10     num[cur] = index;
11     low[cur] = index;
12     for (int i = 1; i <= V; i++) {
13         if (e[cur][i] == 1) {
14             if (num[i] == 0) {
15                 child++;
16                 dfs(i, cur);
17                 low[cur] = min(low[cur], low[i]);
18                 if (cur == root&&child == 2)
19                     flag[cur] = 1;
20                 if (cur != root&&low[i] >= num[cur])
21                     flag[cur] = 1;
22             }
23             else if (i != father) {
24                 low[cur] = min(low[cur], num[i]);
25             }
26         }
27     }
28 }
自己选的路,跪着也要把它走完------ACM坑
原文地址:https://www.cnblogs.com/IKnowYou0/p/6066986.html