青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

POJ 3352 Road Construction 雙連通分量+縮點(diǎn)

Description

It's almost summer time, and that means that it's almost summer construction time! This year, the good people who are in charge of the roads on the tropical island paradise of Remote Island would like to repair and upgrade the various roads that lead between the various tourist attractions on the island.

The roads themselves are also rather interesting. Due to the strange customs of the island, the roads are arranged so that they never meet at intersections, but rather pass over or under each other using bridges and tunnels. In this way, each road runs between two specific tourist attractions, so that the tourists do not become irreparably lost.

Unfortunately, given the nature of the repairs and upgrades needed on each road, when the construction company works on a particular road, it is unusable in either direction. This could cause a problem if it becomes impossible to travel between two tourist attractions, even if the construction company works on only one road at any particular time.

So, the Road Department of Remote Island has decided to call upon your consulting services to help remedy this problem. It has been decided that new roads will have to be built between the various attractions in such a way that in the final configuration, if any one road is undergoing construction, it would still be possible to travel between any two tourist attractions using the remaining roads. Your task is to find the minimum number of new roads necessary.

Input

The first line of input will consist of positive integers n and r, separated by a space, where 3 ≤ n ≤ 1000 is the number of tourist attractions on the island, and 2 ≤ r ≤ 1000 is the number of roads. The tourist attractions are conveniently labelled from 1 to n. Each of the following r lines will consist of two integers, v and w, separated by a space, indicating that a road exists between the attractions labelled v and w. Note that you may travel in either direction down each road, and any pair of tourist attractions will have at most one road directly between them. Also, you are assured that in the current configuration, it is possible to travel between any two tourist attractions.

Output

One line, consisting of an integer, which gives the minimum number of roads that we need to add.

Sample Input

Sample Input 1
10 12
1 2
1 3
1 4
2 5
2 6
5 6
3 7
3 8
7 8
4 9
4 10
9 10
Sample Input 2
3 3
1 2
2 3
1 3

Sample Output

Output for Sample Input 1
2
Output for Sample Input 2
0

Source


   

    題目大意:給定一個(gè)雙向連通的公路網(wǎng),當(dāng)某些公路路段檢修的時(shí)候可能會(huì)由于該段公路不通,可能會(huì)使某些旅游點(diǎn)之間無法通行,求至少新建多少條公路,使得任意對(duì)一段公路進(jìn)行檢修的時(shí)候,所有的旅游景點(diǎn)之間仍然暢通;

    分析:檢修某一路段導(dǎo)致公路網(wǎng)不暢通的原因必然是該段公路在圖中是橋(割邊),因此完全暢通的方法就是,加最若干條邊,使圖中不存在橋。先找出圖中所有的雙連通分量,將雙連通分量進(jìn)行縮點(diǎn),得到一個(gè)樹形圖,求出這個(gè)樹形圖中度為1的點(diǎn)的個(gè)數(shù),新加邊的條數(shù)即是(度為1的點(diǎn)數(shù)目+1)/2,考慮到題目只要求求度為1的點(diǎn)數(shù)目,因此可以部分縮點(diǎn),利用并查集,保存每個(gè)割邊的頂點(diǎn),統(tǒng)計(jì)每個(gè)頂點(diǎn)在并查集中的代表元的度數(shù)即可。
    Sample 1中存在4個(gè)雙連通分量:{1},{2,5,6},{3,7,8},{4,9,10},進(jìn)行縮點(diǎn)之后,求得一個(gè)4個(gè)節(jié)點(diǎn)的樹形圖,其中一個(gè)點(diǎn)的度數(shù)為3,其余3個(gè)點(diǎn)的度數(shù)為1,得到需要加的邊的數(shù)目為(3+1)/2=2。

#include <iostream>
#include 
<vector>
using namespace std;

const int MAXN = 5001;
vector
< vector<int> > adj;
int cnt,low[MAXN],pre[MAXN],visit[MAXN],degree[MAXN];

void dfs(int u,int v){
    visit[u]
=1;
    pre[u]
=cnt++,low[u]=pre[u];
    
int i,len=adj[u].size();
    
for(i=0;i<len;i++){
        
if(adj[u][i]==v) continue;
        
if(!visit[adj[u][i]]) dfs(adj[u][i],u);
        
if(low[adj[u][i]]<low[u]) low[u]=low[adj[u][i]];
    }

    visit[u]
=2;
}

int main(){
    
int i,j,u,v,n,m,len,ans;
    scanf(
"%d %d",&n,&m);
    adj.assign(n
+1,vector<int>());
    
while(m--){
        scanf(
"%d %d",&u,&v);
        adj[u].push_back(v),adj[v].push_back(u);
    }

    memset(visit,
0,sizeof(visit));
    cnt
=0,dfs(1,1);
    memset(degree,
0,sizeof(degree));
    
for(i=1;i<=n;i++){
        len
=adj[i].size();
        
for(j=0;j<len;j++)
            
if(low[i]!=low[adj[i][j]])
                degree[low[i]]
++;
    }

    
for(ans=i=0;i<=n;i++)
        
if(degree[i]==1) ans++;
    printf(
"%d\n",(ans+1)/2);
    
return 0;
}

posted on 2009-05-29 18:53 極限定律 閱讀(1608) 評(píng)論(3)  編輯 收藏 引用 所屬分類: ACM/ICPC

評(píng)論

# re: POJ 3352 Road Construction 雙連通分量+縮點(diǎn) 2009-08-03 10:47 路人

11 14
1 2
1 3
1 4
2 5
6 11
2 6
5 6
5 11
3 7
3 8
7 8
4 9
4 10
9 10

你的程序,這組數(shù)據(jù)時(shí)錯(cuò)誤的。。  回復(fù)  更多評(píng)論   

# re: POJ 3352 Road Construction 雙連通分量+縮點(diǎn) 2009-08-04 09:46 mythit

@路人
多謝指正  回復(fù)  更多評(píng)論   

# re: POJ 3352 Road Construction 雙連通分量+縮點(diǎn) 2011-07-25 19:14 過客

void dfs(int u,int v){
visit[u]=1;
pre[u]=cnt++,low[u]=pre[u];
int i,len=adj[u].size();
for(i=0;i<len;i++){
if(adj[u][i]==v) continue;
if(!visit[adj[u][i]]) dfs(adj[u][i],u);
if(low[adj[u][i]]<low[u]) low[u]=low[adj[u][i]];
}
visit[u]=2;
}
最后一句 visit[u]=2;有什么用啊,求解釋  回復(fù)  更多評(píng)論   

<2009年8月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(10)

隨筆分類

隨筆檔案

友情鏈接

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲视频欧洲视频| 国产精品videosex极品| 亚洲欧美高清| 欧美高清视频| 欧美成人xxx| 国模私拍一区二区三区| 亚洲午夜av在线| 一本色道久久综合亚洲二区三区| 久久久91精品国产一区二区三区| 亚洲欧美成aⅴ人在线观看| 欧美国产日韩一区二区| 欧美91大片| 在线观看国产精品网站| 欧美在线视频网站| 久久国内精品自在自线400部| 欧美午夜精品久久久久久超碰| 亚洲清纯自拍| 亚洲精品国产精品国自产在线| 久久在线播放| 麻豆成人在线观看| 悠悠资源网久久精品| 久久激情中文| 麻豆精品视频在线观看| 国产亚洲欧美色| 欧美伊人精品成人久久综合97| 久久精品91久久香蕉加勒比 | 一区二区三区欧美成人| 99精品视频免费观看| 欧美韩日一区| 日韩亚洲欧美一区二区三区| 国产精品99久久久久久人| 欧美日韩一区二区三区在线观看免| 亚洲电影免费观看高清| 亚洲精选成人| 欧美色大人视频| 亚洲欧美一区二区视频| 久久精品国产综合精品| 国内精品久久久久影院薰衣草| 久久视频国产精品免费视频在线| 蜜臀av性久久久久蜜臀aⅴ| 91久久久亚洲精品| 欧美精品在线视频观看| 亚洲一级高清| 久久嫩草精品久久久久| 在线精品一区二区| 欧美国产综合视频| 亚洲一区二区在线视频| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲国产成人一区| 欧美日韩一区二区精品| 香蕉成人啪国产精品视频综合网| 美女主播一区| 亚洲一级片在线观看| 国产原创一区二区| 欧美顶级少妇做爰| 亚洲天堂男人| 欧美粗暴jizz性欧美20| 亚洲一区二区三区四区视频| 韩日精品视频| 欧美精品自拍| 欧美在线影院| 亚洲久久一区| 麻豆精品网站| 亚洲欧美日韩另类| 亚洲国产日韩欧美在线99| 国产精品av久久久久久麻豆网| 欧美一区二区精品久久911| 亚洲国产精品免费| 久久精品国产亚洲a| 99精品福利视频| 国产字幕视频一区二区| 欧美色欧美亚洲另类七区| 久久久国产视频91| 亚洲图片欧美午夜| 最新日韩av| 久久综合九色99| 午夜视频在线观看一区二区| 最近中文字幕日韩精品| 国产日本欧美一区二区三区在线| 欧美aa国产视频| 久久av红桃一区二区小说| 99在线精品免费视频九九视| 麻豆久久久9性大片| 香蕉乱码成人久久天堂爱免费| 99精品久久免费看蜜臀剧情介绍| 精品不卡一区二区三区| 国产欧美一区二区精品忘忧草| 欧美三级在线播放| 欧美福利视频| 蜜臀va亚洲va欧美va天堂| 欧美中文在线视频| 亚洲视频免费观看| 日韩天堂在线观看| 亚洲激情视频在线播放| 亚洲大黄网站| 欧美二区视频| 欧美freesex8一10精品| 久久全国免费视频| 久久久久九九九| 久久九九热免费视频| 欧美自拍偷拍| 欧美影视一区| 欧美在线精品免播放器视频| 亚洲欧美视频在线观看| 亚洲一级免费视频| 午夜激情久久久| 午夜日韩激情| 久久久久久久综合日本| 久久精品视频在线播放| 久久精品日产第一区二区三区| 欧美中在线观看| 久久av一区二区三区| 久久不射电影网| 久久久无码精品亚洲日韩按摩| 久久精品人人做人人爽电影蜜月| 久久成人18免费网站| 久久精品一二三| 麻豆成人91精品二区三区| 欧美1区2区3区| 亚洲黄色在线视频| 99精品视频网| 午夜精品在线视频| 久久精品视频在线免费观看| 久久婷婷国产麻豆91天堂| 久久夜色精品国产欧美乱| 欧美电影免费| 欧美三级视频在线| 国产午夜精品久久| 亚洲大片在线| 在线一区二区三区四区| 欧美与黑人午夜性猛交久久久| 久久久五月天| 亚洲欧洲视频在线| 亚洲欧美www| 老司机午夜精品视频| 欧美三级在线视频| 国产一区二区三区最好精华液| 亚洲激情第一页| 亚洲欧美综合国产精品一区| 久久一二三国产| 日韩视频在线免费| 久久精品91久久久久久再现| 免费av成人在线| 国产精品夜色7777狼人| 亚洲成人影音| 午夜精品久久久久99热蜜桃导演| 久久欧美肥婆一二区| 日韩亚洲不卡在线| 欧美中文字幕在线| 欧美日韩一区二区三区高清| 国产午夜精品一区二区三区欧美| 亚洲国产日韩欧美综合久久| 亚洲一区二区三区午夜| 欧美国产视频在线| 亚洲影视中文字幕| 欧美精品一区二区视频| 国产在线精品一区二区夜色| 中国女人久久久| 欧美国产日本韩| 久久国产一区| 国产精品毛片a∨一区二区三区|国 | 欧美一区亚洲二区| 欧美日韩国产探花| 在线欧美视频| 久久精品毛片| 中文欧美字幕免费| 欧美日韩91| 亚洲人成网站999久久久综合| 久久精品毛片| 亚洲午夜精品久久久久久app| 欧美www视频在线观看| 激情自拍一区| 久久久久久69| 午夜在线观看免费一区| 国产精品久久久久久久久搜平片| 亚洲免费激情| 亚洲国产精品va在线看黑人动漫 | 久久久久一区二区| 国产一区二区久久| 欧美一区二区三区免费视| 一本综合久久| 国产精品扒开腿做爽爽爽视频| 亚洲精品资源美女情侣酒店| 欧美国产视频一区二区| 久久久亚洲影院你懂的| 国产亚洲一区二区在线观看 | 国产性做久久久久久| 翔田千里一区二区| 这里只有精品丝袜| 国产精品久久久久久久久 | 99pao成人国产永久免费视频| 欧美v日韩v国产v| 另类国产ts人妖高潮视频| 亚洲电影激情视频网站| 欧美成年人视频| 欧美成人a视频| 99亚洲视频| 亚洲网站啪啪| 国产日韩av一区二区| 久久影院亚洲|