zoukankan      html  css  js  c++  java
  • poj1523赤裸裸的割点

    这题真是没什么好说的。。。赤裸裸的求割点直接模板上

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<vector>
     5 #define maxn 1100
     6 
     7 using namespace std;
     8 
     9 vector<int> g[maxn];
    10 int dfn[maxn],low[maxn];
    11 int vis[maxn],cnt[maxn];
    12 int k=1,f=0,index=0,m;
    13 void dfs(int x)
    14 {
    15  //   cout<<"1"<<endl;
    16     int c=0;
    17     for(int i=0;i<g[x].size();i++)
    18     {
    19         int e=g[x][i];
    20         if(vis[e]==0)
    21         {
    22             dfn[e]=low[e]=++index;
    23             vis[e]=1;
    24             dfs(e);
    25             low[x]=min(low[e],low[x]);
    26             if(low[e]>=dfn[x])
    27             {
    28                 cnt[x]++;
    29             }
    30         }
    31         else low[x]=min(low[x],dfn[e]);
    32     }
    33 }
    34 void solve()
    35 {
    36     f=index=0;
    37     memset(dfn,0,sizeof(dfn));
    38     memset(cnt,0,sizeof(cnt));
    39     memset(vis,0,sizeof(vis));
    40     memset(low,0,sizeof(low));
    41     printf("Network #%d
    ",k++);
    42     vis[1]=1;
    43     dfn[1]=low[1]=++index;
    44     dfs(1);
    45     if(cnt[1]>=1) cnt[1]--;
    46     for(int i=1;i<=m;i++)
    47     {
    48         if(cnt[i])
    49         {
    50             printf("  SPF node %d leaves %d subnets
    ",i,cnt[i]+1);
    51             f=1;
    52         }
    53     }
    54     if(f==0) printf("  No SPF nodes
    ");
    55     printf("
    ");
    56 }
    57 int main()
    58 {
    59     int a,b;
    60     while(scanf("%d",&a)!=EOF)
    61     {
    62         for(int i=1;i<=maxn;i++)
    63             g[i].clear();
    64         if(a==0) break;
    65         scanf("%d",&b);
    66         g[a].push_back(b);
    67         g[b].push_back(a);
    68         m=a<b?b:a;
    69         while(1)
    70         {
    71              int x,y;
    72              scanf("%d",&x);
    73              if(x==0) break;
    74              scanf("%d",&y);
    75              g[x].push_back(y);
    76              g[y].push_back(x);
    77              m=m>x?m:x;
    78              m=m>y?m:y;
    79         }
    80         solve();
    81     }
    82     return 0;
    83 }
    View Code
  • 相关阅读:
    江の島西浦写真館2-1
    江の島西浦写真館1-2
    Oracle 查询表空间使用情况
    Oracle 的开窗函数 rank,dense_rank,row_number
    oracle11G 用户密码180天修改概要文件过程
    CentOS6 安装 MySQL5.7
    linux下SS 网络命令详解
    CentOS6 网络设置
    redhat 6 红帽6 Linux 网络配置
    Oracle分析函数——函数列表
  • 原文地址:https://www.cnblogs.com/liboyan/p/4426269.html
Copyright © 2011-2022 走看看