• 【海岛帝国系列赛】No.6 海岛帝国:战争前线


    50234237海岛帝国:战争前线

    【试题描述】

         总指挥官WHT出神入化的计谋虽然大有用武之地,但是聪明的恐怖分子们采取了城市核武器防御系统,可以有效地抵制WHT的炸弹。YSF对此头痛不已,因此 召开了一次国家性大会。在会上,WHT、LJX、LTJ等人均提出了战略方针。可全部被拒绝。WHT对核武器防御系统是一筹莫展。如果再迟几天,敌人的核 武器就会全部生产完毕并开始狂轰滥炸。就在这危难之时,匆匆忙忙从美国的卡内基梅隆大学作为博士生赶回的YSM掌握了此消息。于是,他提出:如果使用核武 器炸断敌军的路,或许就能解围。没有主见的WHT也采取了他的办法,照抄照办。WHT掌握着很多很多枚“蝴蝶”。他要启动计划B。然而由于形势日益紧张, “药师傅”帝国资源极其稀缺,WHT想用很快的方法来求出最少需要炸断几条路,才能使整个敌国的城市不连通,正常人不可能很快做到这一点,所以,他请你来 编个程序告诉他。

    【输入要求】

    * 第一行两个正整数N,M,表示有N个城市,有M条路
    * 接下来M行:每行两个数A,B表示城市A和B之间有一条路相连

    【输出要求】

    在做到使整个敌国的城市不连通炸的路最少的情况下,输出要炸的路,形如a-b,回车分隔。

    【输入实例】

    6 6
    1 4
    1 3
    4 2
    3 2
    2 5
    5 6

    【输出实例】

    5-6
    2-5

    【其他说明】

    M均小于40
    N均小于10

    【试题分析】

        其实想一想,只需要更改求割点的一个符号而已:low[v]>=num[u]  => low[v]>num[u],为什么呢?low[v]>=num[u]代表的是点v是不可能在经过父亲节点u而回到祖先的,所以顶点u是割点,如果low[v]和num[u]相等,则表示还可以回到父亲节点u而回到父亲,而low[v]>num[u]则表示连父亲都回不到了。如果顶点V不能回到祖先,也没有另一条路能回到父亲,那么u-v这条边就是割边。

    【代码】

     1 #include<iostream>
     2 using namespace std;
     3 int n,m,e[10][10],root;
     4 int num[10],low[10],index;
     5 void dfs(int cur,int father)
     6 {
     7     int i;
     8     index++;
     9     num[cur]=index;
    10     low[cur]=index;
    11     for(int i=1;i<=n;i++)
    12     {
    13         if(e[cur][i]==1)
    14         {
    15             if(num[i]==0)
    16             {
    17                 dfs(i,cur);
    18                 low[cur]=min(low[cur],low[i]);
    19                 if(low[i]>num[cur]) printf("%d-%d
    ",cur,i);
    20             }
    21             else if(i!=father) low[cur]=min(low[cur],num[i]);
    22         }
    23     }
    24     return;
    25 }
    26 int main()
    27 {
    28     int x,y;
    29     cin>>n>>m;
    30     for(int i=1;i<=n;i++)
    31         for(int j=1;j<=n;j++)
    32             e[i][j]=0;
    33     for(int i=1;i<=m;i++)
    34     {
    35         cin>>x>>y;
    36         e[x][y]=1;
    37         e[y][x]=1;
    38     }
    39     root=1;
    40     dfs(1,root);
    41 }
    View Code
  • 相关阅读:
    SqlServer执行Insert命令同时判断目标表中是否存在目标数据
    javascript避免dom事件重复触发
    磁盘结构损坏且无法读取
    iframe在iphone中滚动条无效
    Rancher2.x流水线自动化部署
    微服务模块化需要的几个基础功能
    后端程序员的Vue笔记(一)
    自信从何而来
    C#异步案例一则
    Blazor入坑指南
  • 原文地址:https://www.cnblogs.com/wxjor/p/5606669.html
Copyright © 2020-2023  润新知