zoukankan      html  css  js  c++  java
  • POJ 1523

    无向图求割点模板题

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <string.h>
     4 using namespace std;
     5 const int N=1002;
     6 
     7 int subnets[N];
     8 int dfn[N],low[N];
     9 int count,mun,son,ks;
    10 
    11 bool map[N][N];
    12 bool vis[N];
    13 
    14 void init(){
    15     memset(map,0,sizeof(map));
    16     for(int i=0;i<=N;++i){
    17         vis[i]=dfn[i]=low[i]=subnets[i]=0;
    18     }
    19     count=1,son=0;
    20     mun=0;
    21     dfn[1]=low[1]=vis[1]=1;
    22 }
    23 void dfs(int x){
    24     for(int i=1;i<=mun;i++){
    25         if(map[x][i]){
    26             if(!vis[i]){
    27                 vis[i]=1;
    28                 dfn[i]=low[i]=++count;
    29                 dfs(i);
    30                 low[x]=min(low[x],low[i]);
    31                 if(low[i]>=dfn[x]){
    32                     if(x==1)son++;
    33                     else subnets[x]++;
    34                 }
    35             }
    36             else low[x]=min(low[x],dfn[i]);
    37         }
    38     }
    39 }
    40 void print(){
    41     bool yes=0;
    42     if(son>1)subnets[1]=son-1;
    43     printf("Network #%d
    ",++ks);
    44     for(int i=1;i<=mun;i++){
    45         if(subnets[i]){
    46             yes=1;
    47             printf("  SPF node %d leaves %d subnets
    ",i,subnets[i]+1);
    48         }
    49     }
    50     if(!yes)printf("  No SPF nodes
    ");
    51     printf("
    ");
    52 }
    53 int main(){
    54     //freopen("test.txt","r",stdin);
    55     int a,b;
    56     ks=0;
    57     while(scanf("%d",&a)&&a){
    58         init();
    59         scanf("%d",&b);
    60         map[a][b]=map[b][a]=1;
    61         mun=max(max(b,a),mun);
    62         while(scanf("%d",&a)&&a){
    63             scanf("%d",&b);
    64             map[a][b]=map[b][a]=1;
    65             mun=max(max(b,a),mun);
    66         }
    67         dfs(1);
    68         print();
    69     }
    70     return 0;
    71 }
  • 相关阅读:
    [某鸥实训记][objective-c][第四天][个人笔记]
    [某鸥实训记][objective-c][第三天][作业]打地鼠X2
    [某鸥实训记][objective-c][第三天][个人笔记]
    京东书籍爬取
    抽屉爬取
    scrapy项目renrencookie
    scrapy项目suningbook
    scrapy项目4
    scrapy项目3
    scrapy项目2
  • 原文地址:https://www.cnblogs.com/Mr-Xu-JH/p/3899126.html
Copyright © 2011-2022 走看看