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

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>
            亚洲国产精品成人久久综合一区 | 欧美激情麻豆| 国产性色一区二区| 久久福利一区| 久久久青草婷婷精品综合日韩| 国产一区二区三区视频在线观看| 久久久国产精品亚洲一区| 欧美伊人久久| 亚洲欧洲中文日韩久久av乱码| 亚洲欧洲综合另类在线| 欧美日韩一区二区三区在线 | 狠狠狠色丁香婷婷综合久久五月| 久久精品免费播放| 久久这里有精品视频| 亚洲精品日韩在线| 正在播放亚洲| 精品二区视频| 一本久久青青| 尤物九九久久国产精品的分类| 亚洲高清色综合| 国产精品一区二区视频| 欧美国产亚洲视频| 国产精品v欧美精品v日本精品动漫| 欧美一区1区三区3区公司| 久久久久久久一区二区| 99国产麻豆精品| 久久福利精品| 亚洲一区久久| 另类天堂av| 欧美一区二区在线播放| 欧美α欧美αv大片| 香蕉av福利精品导航| 嫩草成人www欧美| 欧美亚洲在线观看| 欧美电影免费观看高清| 久久久99精品免费观看不卡| 欧美精品在线观看一区二区| 久久露脸国产精品| 国产精品永久在线| 亚洲人线精品午夜| 狠狠色综合一区二区| 夜夜嗨av色一区二区不卡| 韩国亚洲精品| 欧美亚洲午夜视频在线观看| 一本久久综合| 久热成人在线视频| 老巨人导航500精品| 国产精品一页| 亚洲一区二区网站| 亚洲美女黄网| 女人香蕉久久**毛片精品| 久久精品综合网| 国产欧亚日韩视频| 亚洲欧美日韩国产一区| 亚洲一区中文字幕在线观看| 免费短视频成人日韩| 免费看的黄色欧美网站| 国内久久视频| 欧美亚洲一区二区三区| 欧美在线免费观看亚洲| 国产精品免费网站| 亚洲视频www| 欧美有码在线视频| 国产伦精品一区二区三区照片91| 亚洲网站视频| 亚洲欧美精品中文字幕在线| 欧美视频一区二区在线观看| 亚洲免费av观看| 亚洲一区二区三区777| 国产精品美女黄网| 亚洲欧美中日韩| 久久久久国产精品一区| 国产在线视频欧美| 久久这里有精品视频| 亚洲国产精品999| 亚洲色图在线视频| 国产精品视频你懂的| 欧美在线一二三区| 免费亚洲网站| 亚洲伦理久久| 国产精品jvid在线观看蜜臀| 亚洲主播在线观看| 麻豆精品视频在线| 91久久午夜| 国产精品99免视看9| 亚洲欧美国产一区二区三区| 久久久噜噜噜| 亚洲欧洲一区二区三区| 欧美午夜精品久久久久久久 | 亚洲欧美电影在线观看| 久久久久久电影| 亚洲国产视频直播| 欧美日韩国产成人在线| 午夜精品久久久久久久久久久| 久久免费精品视频| 亚洲美女视频在线观看| 欧美日韩综合精品| 久久成人国产| 亚洲免费福利视频| 久久er精品视频| 亚洲精品小视频| 国产精品揄拍500视频| 麻豆久久久9性大片| 亚洲无线视频| 亚洲盗摄视频| 久久福利精品| 亚洲午夜伦理| 在线看不卡av| 国产美女诱惑一区二区| 欧美成人综合在线| 久久国产免费| 在线亚洲激情| 亚洲国产日韩欧美一区二区三区| 午夜精品久久久久| 一本色道**综合亚洲精品蜜桃冫| 国产精品丝袜白浆摸在线| 免费高清在线视频一区·| 欧美一区二区三区四区在线观看地址 | 亚洲国产精品久久| 国产日韩亚洲欧美精品| 欧美精品播放| 免费亚洲一区二区| 久久成人精品无人区| 在线天堂一区av电影| 亚洲国产一区在线观看| 免费人成精品欧美精品| 久久久精品免费视频| 亚洲无亚洲人成网站77777| 亚洲国产免费| **网站欧美大片在线观看| 国产精品日韩一区二区| 欧美三区美女| 欧美日韩精品免费观看视一区二区| 久久久久五月天| 久久久精品999| 欧美在线地址| 欧美在线视频播放| 午夜日韩视频| 欧美一区二区三区日韩视频| 亚洲综合日韩| 亚洲男人的天堂在线| 妖精成人www高清在线观看| 日韩午夜av电影| 亚洲伦理在线观看| 99精品欧美一区二区三区| 亚洲人成绝费网站色www| 亚洲黄一区二区三区| 亚洲国产成人精品女人久久久 | 国产精品成人v| 欧美亚一区二区| 国产精品手机视频| 国产欧美一区二区三区久久人妖 | 国产精品一区二区视频| 国产伦精品一区二区三区高清| 国产精品亚发布| 国产亚洲一区二区三区在线播放 | 欧美久久久久| 欧美视频中文字幕在线| 国产精品久久久久久久久久免费看| 欧美三级欧美一级| 国产精品盗摄久久久| 国产女人18毛片水18精品| 国产精品视屏| 精品动漫3d一区二区三区| 91久久视频| 亚洲伊人观看| 久久久久国色av免费看影院| 欧美a级一区| 亚洲免费大片| 久久国产夜色精品鲁鲁99| 免费影视亚洲| 国产精品久久亚洲7777| 在线播放日韩专区| 一本色道综合亚洲| 久久精品国产精品亚洲综合| 欧美激情视频在线播放| 99pao成人国产永久免费视频| 午夜伦欧美伦电影理论片| 久久综合久久久| 国产精品女主播| 亚洲福利视频免费观看| 亚洲欧美国产va在线影院| 噜噜噜噜噜久久久久久91| 亚洲日本视频| 久久福利影视| 国产精品欧美激情| 亚洲高清三级视频| 欧美专区中文字幕| 亚洲人成亚洲人成在线观看| 欧美在线视频观看免费网站| 欧美激情一区三区| 精品成人在线观看| 亚洲欧美国产精品桃花| 亚洲国产婷婷| 久久国产日韩欧美| 国产精品美女在线| 99国产欧美久久久精品| 久久综合中文色婷婷| 亚洲制服av| 欧美性做爰毛片|