现在的位置: 首页 > 综合 > 正文

poj 1144 Network(割点)

2018年03月17日 ⁄ 综合 ⁄ 共 976字 ⁄ 字号 评论关闭
题意:就要给你一个图,求有多少个割点

思路:求无向图的割点,直接上模板没什么好说的,附上两种形式的模板

模板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
{
    int
to,nxt;
}edge[M*M];

void addedge (int cu,int cv)
{
    edge[e].to =
cv;
    edge[e].nxt
= head[cu];
    head[cu] = e
++;
}

int min (int a,int b)
{
    return a
> b ? b : a;
}
void dfs (int cnt,int u)
{
    dep[u] =
low[u] = cnt;
    for (int i =
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 ()
{
    int
u,v;
    while (cin
>>
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)
   

抱歉!评论已关闭.