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

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)之間無(wú)法通行,求至少新建多少條公路,使得任意對(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 極限定律 閱讀(1587) 評(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 過(guò)客

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年5月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

導(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>
            亚洲欧洲精品一区二区三区波多野1战4 | 亚洲电影在线播放| 久久久国产精品亚洲一区 | 久久精品国产一区二区电影| 一区二区三区**美女毛片| 欧美日韩精品在线| 亚洲欧美日本国产专区一区| 午夜亚洲伦理| 亚洲精品1234| 亚洲亚洲精品在线观看| 国产麻豆精品久久一二三| 欧美在线视频观看| 老司机精品导航| 一区二区三区国产在线| 亚洲一区免费在线观看| 黄色成人在线网址| 91久久精品一区二区别| 欧美色中文字幕| 久久久久久久久久久久久久一区| 久久久噜噜噜久久人人看| 日韩视频国产视频| 亚洲国产三级网| 亚洲影音一区| 亚洲激情一区二区| 亚洲欧美激情视频| 亚洲精品久久久久中文字幕欢迎你| 99在线|亚洲一区二区| 国产综合网站| 99精品99| 亚洲电影免费观看高清| 亚洲视频精选| 日韩视频二区| 久久久久91| 亚洲视频香蕉人妖| 久久久久久久999精品视频| 在线视频精品一| 久久久久99精品国产片| 午夜国产精品影院在线观看| 久久性色av| 久久精品国产亚洲aⅴ| 欧美日韩在线三区| 亚洲国产精品成人综合色在线婷婷| 国产精品试看| 9人人澡人人爽人人精品| 亚洲第一视频| 久久www成人_看片免费不卡| 亚洲一区在线播放| 欧美剧在线免费观看网站| 免费亚洲电影在线| 精品成人一区二区三区| 亚洲永久免费av| 亚洲视频综合| 欧美日韩视频在线一区二区 | 欧美在线视频在线播放完整版免费观看| 亚洲日本一区二区| 久久久精品动漫| 久久激情婷婷| 国产一区二区在线观看免费播放| 一本久久综合| 亚洲午夜羞羞片| 欧美日韩视频在线一区二区观看视频| 欧美激情成人在线| **网站欧美大片在线观看| 久久国产日韩| 久久嫩草精品久久久精品| 国产亚洲欧美一区二区三区| 亚洲免费在线| 久久久久网址| 亚洲电影免费观看高清完整版| 久久久999精品| 欧美a级一区二区| 亚洲国产欧美一区二区三区同亚洲| 久久精品视频在线免费观看| 另类综合日韩欧美亚洲| 在线观看日韩专区| 免费成人高清视频| 亚洲人成亚洲人成在线观看| 一本色道久久综合亚洲精品高清 | 亚洲精品美女| 欧美日韩一区二区高清| 日韩亚洲成人av在线| 亚洲免费中文字幕| 国产日本欧洲亚洲| 久久蜜桃资源一区二区老牛| 亚洲国产美女| 亚洲在线不卡| 激情综合自拍| 欧美黑人多人双交| 亚洲午夜精品网| 久久久噜噜噜久久人人看| 亚洲国产一区二区三区在线播| 欧美激情一区二区在线 | 久久久精品999| 亚洲三级网站| 国产农村妇女精品一二区| 久久久噜久噜久久综合| 亚洲精品国产视频| 久久精品视频免费播放| 亚洲精品日韩在线观看| 国产精品另类一区| 六月丁香综合| 亚洲综合精品一区二区| 欧美激情一区二区三区高清视频 | 亚洲男人av电影| 尤物在线观看一区| 欧美午夜在线视频| 裸体女人亚洲精品一区| 亚洲少妇一区| 亚洲高清在线视频| 久久精品日韩欧美| 亚洲淫片在线视频| 亚洲激情欧美激情| 国产丝袜一区二区| 欧美日韩视频一区二区三区| 久久人体大胆视频| 欧美一区1区三区3区公司| 亚洲欧洲一区二区三区久久| 久久在线免费| 欧美一级播放| 一区二区三区视频免费在线观看| 国产永久精品大片wwwapp| 欧美日韩一区在线| 欧美成人按摩| 久久婷婷亚洲| 欧美伊人久久久久久午夜久久久久| 999亚洲国产精| 亚洲激情欧美激情| 亚洲电影免费观看高清完整版在线观看| 性欧美在线看片a免费观看| a91a精品视频在线观看| 91久久精品美女| 尤物99国产成人精品视频| 国产偷自视频区视频一区二区| 欧美视频在线播放| 欧美精品首页| 欧美精品日韩三级| 欧美片第1页综合| 欧美激情视频一区二区三区免费| 久久深夜福利| 久久影视精品| 久久婷婷丁香| 猛干欧美女孩| 欧美国产日本在线| 欧美理论在线播放| 欧美久久久久久| 欧美性猛交99久久久久99按摩 | 久久天堂成人| 久久精品亚洲一区二区三区浴池| 午夜日韩在线观看| 欧美一区二区三区精品| 久久精品噜噜噜成人av农村| 久久久久久电影| 欧美ab在线视频| 欧美日韩高清在线一区| 欧美日韩国产精品成人| 欧美三级小说| 国产精品尤物| 黑人一区二区| 91久久夜色精品国产网站| 99精品欧美| 亚洲午夜精品在线| 欧美在线视频在线播放完整版免费观看 | 一区二区自拍| 亚洲久久在线| 午夜精品理论片| 久久免费高清| 亚洲看片网站| 午夜精品一区二区三区在线播放 | 亚洲婷婷综合久久一本伊一区| 亚洲天堂免费在线观看视频| 欧美一级理论性理论a| 免费日韩成人| 国产精品久久久久99| 一区二区在线观看av| 中文亚洲欧美| 久久久亚洲国产美女国产盗摄| 欧美国产综合视频| 亚洲午夜国产成人av电影男同| 午夜精品一区二区三区在线播放| 久久亚洲综合| 国产精品嫩草99av在线| 樱花yy私人影院亚洲| 亚洲影院色在线观看免费| 亚洲激情网址| 欧美在线播放| 亚洲欧洲日夜超级视频| 亚洲欧美日本视频在线观看| 久久综合伊人77777麻豆| 国产精品剧情在线亚洲| 亚洲欧洲三级| 久久se精品一区二区| 亚洲精品一区二区网址 | 亚洲毛片av| 久久婷婷麻豆| 国产一区二区在线观看免费| 亚洲午夜av电影| 91久久久久久久久| 久久精品日韩欧美| 国产精品极品美女粉嫩高清在线 | 精品不卡视频|