思路:求无向图的割点,直接上模板没什么好说的,附上两种形式的模板
模板1:
//256K
63MS
#include <iostream>
#include <string.h>
#include <stdio.h>
#define M 110
using namespace std;
int dep[M],low[M],head[M];
bool cut[M];
int e,n,rt,son;
struct E
{
to,nxt;
}edge[M*M];
void addedge (int cu,int cv)
{
cv;
= head[cu];
++;
}
int min (int a,int b)
{
> b ? b : a;
}
void dfs (int cnt,int u)
{
low[u] = cnt;
head[u];i != -1;i = edge[i].nxt)
int v = edge[i].to;
if (!dep[v])
{
dfs (cnt + 1,v);
if (u == rt)
son ++;
else
{
low[u] = min (low[u],low[v]);
if (dep[u] <= low[v])
cut[u] = true;
}
}
else
low[u] = min (low[u],dep[v]);
}
int main ()
{
u,v;
>>
n&&n)
memset (dep,0,sizeof(dep));
memset (low,0,sizeof(low));
memset (cut,false,sizeof(cut));
memset (head,0xFF,sizeof (head));
e = 0;
while (cin >>
u&&u)