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

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è)樹(shù)形圖,求出這個(gè)樹(shù)形圖中度為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)的樹(shù)形圖,其中一個(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)  編輯 收藏 引用 所屬分類(lèi): 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年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(10)

隨筆分類(lèi)

隨筆檔案

友情鏈接

搜索

最新評(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>
            亚洲视频axxx| 欧美国产免费| 国产精品一区=区| 欧美一区日韩一区| 欧美在线视频a| 91久久精品国产91性色| 亚洲精品一区二区三区不| 欧美特黄a级高清免费大片a级| 亚洲欧美激情诱惑| 久久精品色图| 99国产精品久久久久久久久久 | 伊人久久久大香线蕉综合直播| 亚洲午夜av在线| 久久亚洲一区二区| 亚洲国产精品va在看黑人| 欧美黑人在线播放| 欧美在线亚洲在线| 免播放器亚洲一区| 午夜在线电影亚洲一区| 久久青草久久| 欧美一级视频免费在线观看| 久久久久久亚洲精品中文字幕 | 国产精品黄色| 美女精品一区| 国产精品对白刺激久久久| 久热爱精品视频线路一| 欧美精品一区二区久久婷婷| 欧美在线一二三四区| 免费视频一区| 午夜一区二区三区不卡视频| 国产精品中文字幕在线观看| 欧美激情一区二区三区不卡| 国产精品美女xx| 亚洲激情影院| 伊人男人综合视频网| 99视频在线观看一区三区| 精品粉嫩aⅴ一区二区三区四区| 一区二区福利| 亚洲蜜桃精久久久久久久| 午夜久久99| 午夜精品久久| 欧美日韩免费观看一区二区三区 | 欧美一区二区免费| 欧美日韩国产页| 亚洲国产精品久久| 国产精品热久久久久夜色精品三区 | 亚洲一区视频在线观看视频| 最新高清无码专区| 久久久久成人精品| 欧美影院成人| 国产欧美日韩一级| 亚洲永久在线观看| 午夜在线a亚洲v天堂网2018| 欧美丝袜一区二区三区| 亚洲精选在线观看| 99国产精品国产精品久久| 欧美成人午夜| 亚洲欧洲另类国产综合| 91久久久久久| 欧美国产欧美亚州国产日韩mv天天看完整| 久久综合给合久久狠狠狠97色69| 国产一区二区中文字幕免费看| 亚洲视频综合在线| 亚洲欧美在线免费观看| 亚洲国产99| 欧美在线一二三区| 你懂的国产精品| 久久久天天操| 国产亚洲人成网站在线观看| 亚洲自啪免费| 久久精品视频在线播放| 国内揄拍国内精品久久| 久久久国产成人精品| 可以免费看不卡的av网站| 亚洲电影av| 欧美日韩久久不卡| 亚洲视频久久| 久久综合精品国产一区二区三区| 伊人精品久久久久7777| 欧美成ee人免费视频| 亚洲精品久久久蜜桃| 亚洲欧美自拍偷拍| 国产中文一区二区| 欧美激情国产日韩| 亚洲在线免费观看| 你懂的国产精品| 亚洲免费高清视频| 欧美一区激情| 亚洲欧洲av一区二区| 久久男女视频| 日韩一区二区免费高清| 国产精品视频精品视频| 久久久久五月天| 亚洲乱码久久| 久久夜色精品| 一区二区三区 在线观看视| 国产美女精品| 欧美激情导航| 欧美在线日韩在线| 99在线精品视频在线观看| 欧美在线影院在线视频| 亚洲精品国产精品久久清纯直播 | 亚洲欧美一区二区三区久久 | 亚洲韩国青草视频| 欧美一区二视频| 亚洲二区在线视频| 国产精品美女视频网站| 蜜月aⅴ免费一区二区三区| 一道本一区二区| 久久亚洲精品一区| 午夜精品视频在线观看| 亚洲精品中文字幕有码专区| 国产欧美一区二区三区沐欲| 欧美精品一级| 狂野欧美激情性xxxx欧美| 一区二区三区欧美在线观看| 亚洲国产成人久久综合一区| 久久久久久久一区二区| 亚洲欧美日韩系列| 一区二区三区欧美视频| 影院欧美亚洲| 激情久久久久久| 国产日产欧美a一级在线| 欧美另类在线播放| 欧美国产第一页| 美女黄毛**国产精品啪啪| 久久激情五月丁香伊人| 香蕉久久夜色精品国产| 亚洲性感激情| 亚洲一级黄色av| 制服丝袜激情欧洲亚洲| 日韩一区二区免费看| 亚洲精品欧美一区二区三区| 欧美激情视频一区二区三区在线播放 | 久久精品30| 久久国产夜色精品鲁鲁99| 欧美在线高清视频| 欧美中文字幕视频| 欧美一级专区免费大片| 欧美一级黄色网| 欧美一区二区三区日韩视频| 欧美在线网站| 久久视频这里只有精品| 久久亚洲综合网| 欧美99在线视频观看| 欧美老女人xx| 欧美视频在线观看 亚洲欧| 欧美日韩免费一区二区三区| 欧美日韩精品免费观看视一区二区| 欧美国产日韩二区| 欧美日韩亚洲一区二| 国产精品一区视频| 国产一区自拍视频| 亚洲国产精品悠悠久久琪琪| 亚洲久久视频| 亚洲欧美日韩综合aⅴ视频| 久久成人18免费观看| 蜜桃av噜噜一区二区三区| 亚洲国产精品高清久久久| 一本色道久久综合狠狠躁篇怎么玩| 亚洲少妇一区| 久久精品一二三区| 欧美日韩国产限制| 国产亚洲欧美日韩精品| 亚洲国产一区二区a毛片| 亚洲午夜极品| 久久影视精品| 一本综合精品| 久久免费黄色| 欧美日韩国产一区二区| 国产一区二区三区四区老人| 亚洲国产精品久久久久秋霞影院 | 亚洲久久一区二区| 亚洲午夜视频在线| 巨乳诱惑日韩免费av| 欧美日韩一区二区视频在线| 国内精品久久久久影院色 | 亚洲午夜免费视频| 久久一本综合频道| 99视频精品全国免费| 久久精品99| 欧美视频在线一区| 亚洲福利视频免费观看| 亚洲欧美一级二级三级| 亚洲动漫精品| 欧美在线观看视频一区二区三区| 欧美韩国一区| 激情丁香综合| 欧美亚洲免费电影| 亚洲日本在线观看| 玖玖精品视频| 国产视频一区二区三区在线观看| 99精品欧美一区| 免费日韩一区二区| 香蕉久久久久久久av网站| 欧美日韩免费一区二区三区| 亚洲狠狠丁香婷婷综合久久久| 久久福利一区| 亚洲午夜一区二区| 欧美视频不卡|