<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      題目描述

      曹是一只愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園里刷街。河蟹看到歡快的曹,感到不爽。河蟹決定封鎖陽光大學,不讓曹刷街。

      陽光大學的校園是一張由N個點構成的無向圖,N個點之間由M條道路連接。每只河蟹可以對一個點進行封鎖,當某個點被封鎖后,與這個點相連的道路就被封鎖了,曹就無法在與這些道路上刷街了。非常悲劇的一點是,河蟹是一種不和諧的生物,當兩只河蟹封鎖了相鄰的兩個點時,他們會發生沖突。

      詢問:最少需要多少只河蟹,可以封鎖所有道路并且不發生沖突。

      輸入格式

      第一行:兩個整數N,M

      接下來M行:每行兩個整數A,B,表示點A到點B之間有道路相連。

      輸出格式

      僅一行:如果河蟹無法封鎖所有道路,則輸出“Impossible”,否則輸出一個整數,表示最少需要多少只河蟹。

      輸入輸出樣例

      輸入 #1
      3 3
      1 2
      1 3
      2 3
      
      輸出 #1
      Impossible
      
      輸入 #2
      3 2
      1 2
      2 3
      
      輸出 #2
      1

      說明/提示

      【數據規模】

      1<=N<=10000,1<=M<=100000,任意兩點之間最多有一條道路。


      題解

      本題實際上是一道二分圖的題目。

      如果我們把圖中U、V兩個集合中的所有連線都用河蟹斷開,就達到了題目要求。要判斷圖中的二分圖,只需要類似01迷宮進行BFS遍歷染色即可。在染色的過程中,如果發現連線的另一個端點未染色,就用和當前端點不同的顏色染色,要是已經染色且和當前節點顏色相同,就說明構成循環圈,不能構成二分圖,類似下圖的情況。

      代碼如下:

        1 #include <iostream>
        2 #include <math.h>
        3 #include <stdio.h>
        4 #include <algorithm>
        5 #include <string.h>
        6 
        7 using namespace std;
        8 
        9 const int MAXN = 100005;
       10 int first[MAXN], n, m, en, color[MAXN], f[2], u, v; //f統計不同顏色節點數 
       11 int front, rear; 
       12 bool vis[MAXN]; 
       13 int ans;
       14 
       15 struct edge
       16 {
       17     int zhongdian, changdu;
       18     int next;
       19 };
       20 
       21 edge ed[MAXN]; 
       22 
       23 void add_edge(int s, int e, int d) 
       24 {
       25     en++; 
       26     ed[en].next = first[s]; 
       27     first[s] = en;
       28     ed[en].zhongdian = e;
       29     ed[en].changdu = d;
       30 }
       31 
       32 struct Node
       33 {
       34     int x, y;
       35     int step;
       36 };
       37 Node q[MAXN];
       38 
       39 int bfs(int a)
       40 {
       41     Node now, next;
       42     now.x = a;
       43     vis[a] = 1;
       44     color[a] = 1;
       45     f[0] = 0;
       46     f[1] = 1;
       47     front = rear = 0;
       48     q[rear] = now;
       49     rear++;
       50     while(front < rear)
       51     {
       52         now = q[front++];
       53         for(int i = first[now.x]; i; i = ed[i].next)
       54         //first[now]:當前點的第一條邊;ed[i].next:下一個訪問的點  
       55         {
       56             if(color[ed[i].zhongdian] != -1)
       57             {
       58                 if(color[ed[i].zhongdian] == color[now.x])
       59                 {
       60                     cout << "Impossible" << endl;
       61                     return -1;
       62                 }
       63             } 
       64             else
       65             {
       66                 color[ed[i].zhongdian] = (color[now.x] + 1) % 2;
       67                 q[rear].x = ed[i].zhongdian;
       68                 rear++;
       69                 f[color[ed[i].zhongdian]]++;
       70             }
       71         } 
       72     }
       73     ans += min(f[0], f[1]);
       74 }
       75 
       76 int main()
       77 {
       78     cin >> n >> m;
       79     for(int i = 1; i <= n; i++)
       80     {
       81         color[i] = -1; //初始化  
       82     }
       83     for(int i = 1; i <= m; i++)
       84     {
       85         cin >> u >> v;
       86         add_edge(u, v, 0);
       87         add_edge(v, u, 0);
       88     }
       89     for(int i = 1; i <= n; i++)
       90     {
       91         if(color[i] == -1)
       92         {
       93             if(bfs(i) < 0)
       94             {
       95                 return 0;
       96             }
       97         } 
       98     }
       99     cout << ans << endl;
      100     
      101     return 0;
      102 }

      代碼中的f數組是用來統計黑白兩種染色點的個數的,本題所求的最小河蟹數就是兩種染色點個數的最小值。

       

      posted on 2019-08-23 11:38  zealsoft  閱讀(501)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 欧洲精品亚洲精品日韩专区 | 2021av在线天堂网| 午夜天堂一区人妻| 亚洲狠狠狠一区二区三区| 国产精品系列在线免费看| 超碰人人超碰人人| 亚洲熟女乱色综合亚洲图片| 九九热在线免费视频播放| 国产女人看国产在线女人| 久久精品国产亚洲αv忘忧草 | 中文字幕日韩有码一区| 成人国产精品日本在线观看| 五月天天天综合精品无码| 日本黄色三级一区二区三区| 性色av 一区二区三区| 久在线视频播放免费视频| 午夜成人无码免费看网站| 正在播放酒店约少妇高潮| 亚洲综合小综合中文字幕 | 天堂v亚洲国产v第一次| 成人午夜视频一区二区无码| 中国少妇无码专区| 人妻日韩人妻中文字幕| 亚洲成人av在线资源| 激情 自拍 另类 亚洲| 亚洲综合在线一区二区三区| 欧美成人精品一级在线观看| 男人一天堂精品国产乱码| 午夜国产理论大片高清| 久久国产热这里只有精品| 国产精品不卡一二三区| 亚洲日本欧洲二区精品| 大又大又粗又硬又爽少妇毛片| 人妻无码av中文系列久| 激情综合五月网| 国产麻豆成人精品av| 一区二区三区四区黄色片| 成人网站免费观看永久视频下载| 精品午夜福利在线观看| 美女一区二区三区亚洲麻豆| 337p日本欧洲亚洲大胆色噜噜|