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

POJ 3177 Redundant Paths 雙連通分量+縮點(diǎn)

Description

In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) to another field, Bessie and the rest of the herd are forced to cross near the Tree of Rotten Apples. The cows are now tired of often being forced to take a particular path and want to build some new paths so that they will always have a choice of at least two separate routes between any pair of fields. They currently have at least one route between each pair of fields and want to have at least two. Of course, they can only travel on Official Paths when they move from one field to another.

Given a description of the current set of R (F-1 <= R <= 10,000) paths that each connect exactly two different fields, determine the minimum number of new paths (each of which connects exactly two fields) that must be built so that there are at least two separate routes between any pair of fields. Routes are considered separate if they use none of the same paths, even if they visit the same intermediate field along the way.

There might already be more than one paths between the same pair of fields, and you may also build a new path that connects the same fields as some other path.

Input

Line 1: Two space-separated integers: F and R

Lines 2..R+1: Each line contains two space-separated integers which are the fields at the endpoints of some path.

Output

Line 1: A single integer that is the number of new paths that must be built.

Sample Input

7 7
1 2
2 3
3 4
2 5
4 5
5 6
5 7

Sample Output

2

Hint

Explanation of the sample:

One visualization of the paths is:
   1   2   3
+---+---+
| |
| |
6 +---+---+ 4
/ 5
/
/
7 +
Building new paths from 1 to 6 and from 4 to 7 satisfies the conditions.
   1   2   3
+---+---+
: | |
: | |
6 +---+---+ 4
/ 5 :
/ :
/ :
7 + - - - -
Check some of the routes:
1 – 2: 1 –> 2 and 1 –> 6 –> 5 –> 2
1 – 4: 1 –> 2 –> 3 –> 4 and 1 –> 6 –> 5 –> 4
3 – 7: 3 –> 4 –> 7 and 3 –> 2 –> 5 –> 7

Every pair of fields is, in fact, connected by two routes.

It's possible that adding some other path will also solve the problem (like one from 6 to 7). Adding two paths, however, is the minimum.

Source


    題意大意:一群牛將被在一個(gè)特定路徑構(gòu)成的農(nóng)場(chǎng)上遷移,每?jī)蓧K農(nóng)場(chǎng)之間都至少有一條通道,這些牛要求每?jī)蓧K路徑至少要有兩條通道,求最少需要修建多少條路才能滿足要求。
    這題的解法與http://www.shnenglu.com/mythit/archive/2009/05/29/86082.html完全一樣,只是題目中說了圖中有可能存在平行邊,這里必須判斷一下。我還是很偷懶的用了STL里的vector模擬鄰接矩陣,并且開了個(gè)5001*5001的bool數(shù)組判斷平行邊。結(jié)果導(dǎo)致代碼的效率和空間消耗都很大,110MS和將近24M的內(nèi)存空間。如果自己建圖的話,效率能提高很多。

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

const int MAXN = 5001;
vector
< vector<int> > adj;
bool hash[MAXN][MAXN];
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;
    
while(scanf("%d %d",&n,&m)!=EOF){
        adj.assign(n
+1,vector<int>());
        memset(hash,
false,sizeof(hash));
        
while(m--){
            scanf(
"%d %d",&u,&v);
            
if(!hash[u][v]){
                hash[u][v]
=true;
                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-30 01:18 極限定律 閱讀(1564) 評(píng)論(4)  編輯 收藏 引用 所屬分類: ACM/ICPC

評(píng)論

# re: POJ 3177 Redundant Paths 雙連通分量+縮點(diǎn) 2009-08-14 09:53 zeus

省去hash可以這樣判重空間小很多 時(shí)間沒多多少 依然0ms
bool isok( int u, int v )//判重
{
for ( int i= 0; i< g[u].size(); ++i )
if ( g[u][i]== v ) return false;

return true;
}  回復(fù)  更多評(píng)論   

# re: POJ 3177 Redundant Paths 雙連通分量+縮點(diǎn) 2009-08-14 20:55 極限定律

我也想這樣做的,不過怕時(shí)間效率變低,就偷懶直接HASH了@zeus
  回復(fù)  更多評(píng)論   

# re: POJ 3177 Redundant Paths 雙連通分量+縮點(diǎn) 2011-04-28 09:30 Icyeye

拜讀了哈,幫助很大,謝啦^-^
但是有一點(diǎn),那個(gè)visit[u]=2不知道有什么用,但注釋掉后能快三分之二左右的時(shí)間~~  回復(fù)  更多評(píng)論   

# re: POJ 3177 Redundant Paths 雙連通分量+縮點(diǎn)[未登錄] 2012-07-31 20:48 bigrabbit

樓主,我發(fā)現(xiàn)個(gè)問題。這組數(shù)據(jù)對(duì)于下面的數(shù)據(jù)
5 6
1 2
1 3
2 3
3 4
3 5
4 5
輸出的low數(shù)組是 0 0 0 1 1
是不對(duì)的,應(yīng)該是0 0 0 0 0,你建圖的方式很奇怪,我也看不懂你到底是怎么建圖的。可以解釋下嗎?我直接用vector<int> edg[]搞的,刪除重邊。  回復(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>
            久久久久久综合网天天| 亚洲三级色网| 欧美一区二区大片| 午夜精品影院在线观看| 国产欧美精品日韩| 美乳少妇欧美精品| 欧美激情精品久久久久久免费印度| 亚洲国产日韩欧美在线99| 亚洲国产人成综合网站| 欧美国产91| 欧美一区91| 欧美~级网站不卡| 亚洲永久免费视频| 久久久一二三| 一区二区日韩欧美| 欧美一级网站| 亚洲毛片av| 香蕉乱码成人久久天堂爱免费| 在线免费观看视频一区| 日韩亚洲一区在线播放| 国产亚洲一区在线播放| 亚洲欧洲美洲综合色网| 国产精品久久久久久久久久久久| 久久久久久9999| 欧美日韩免费观看一区=区三区| 欧美一区亚洲一区| 欧美激情精品久久久六区热门| 亚洲欧美一区二区三区久久 | 99热免费精品| 午夜精品久久| 一区二区黄色| 久久亚洲春色中文字幕| 亚洲视频网在线直播| 久久久久综合| 欧美在线视频一区二区三区| 欧美大片免费久久精品三p | 亚洲国产成人精品久久| 亚洲一区二区三区免费在线观看| 在线观看福利一区| 亚洲永久字幕| 亚洲视频www| 欧美电影免费观看大全| 久久久久国产精品www| 欧美日韩一区二区精品| 欧美国产日本韩| 黄色成人在线网站| 亚洲欧美在线免费| 亚洲性av在线| 欧美另类综合| 亚洲全黄一级网站| 在线精品视频一区二区三四| 性欧美1819性猛交| 亚洲欧美日韩精品久久| 欧美日韩一视频区二区| 亚洲精品视频在线看| 亚洲毛片网站| 欧美精品一区二区三区久久久竹菊| 久久亚洲图片| 在线精品亚洲一区二区| 久久久精品国产一区二区三区 | 蜜桃av一区二区在线观看| 国产亚洲欧美一区在线观看 | 一区二区三区日韩精品| 这里是久久伊人| 欧美日韩精品国产| 99精品热视频只有精品10| 一区二区三区成人| 欧美日韩亚洲国产一区| 一区二区久久久久久| 亚洲男人的天堂在线| 国产精品99免费看| 亚洲一区二区在| 久久精品在这里| 精品999在线播放| 欧美成黄导航| 日韩视频免费在线| 久久av资源网| 激情自拍一区| 欧美激情一区二区三区不卡| 亚洲精品视频在线观看网站 | 99视频精品在线| 国产精品初高中精品久久| 亚洲欧美日韩国产成人| 久久手机免费观看| 亚洲精品国产日韩| 国产精品久久久久久户外露出| 亚洲女性裸体视频| 欧美+日本+国产+在线a∨观看| 亚洲毛片网站| 国产精品一区二区在线观看网站| 欧美在线亚洲| 亚洲黄色影院| 久久成人18免费网站| 亚洲丰满少妇videoshd| 欧美三级韩国三级日本三斤| 亚洲欧美在线免费| 亚洲人成在线观看| 久久人人超碰| 亚洲手机在线| 在线日韩视频| 国产精品亚洲综合色区韩国| 久久亚洲免费| 亚洲免费在线观看| 亚洲第一精品久久忘忧草社区| 亚洲欧美日本国产有色| 亚洲高清久久| 国产主播精品在线| 欧美手机在线视频| 可以看av的网站久久看| 亚洲综合精品一区二区| 最新日韩av| 毛片基地黄久久久久久天堂 | 精品69视频一区二区三区| 欧美日韩精品一区二区天天拍小说| 久久国产婷婷国产香蕉| 一本色道久久综合精品竹菊 | 亚洲欧美成人综合| 亚洲精品免费一区二区三区| 国产专区一区| 国产欧美日韩精品专区| 欧美亚韩一区| 欧美日韩国产综合视频在线观看| 久久蜜桃精品| 久久久www成人免费精品| 亚洲一区亚洲二区| 一区二区欧美激情| 日韩视频亚洲视频| 最新日韩在线视频| 欧美黄在线观看| 欧美69视频| 蜜臀va亚洲va欧美va天堂| 久久精品国产久精国产一老狼| 午夜宅男欧美| 亚洲欧美在线网| 亚洲男女自偷自拍| 亚洲女人天堂成人av在线| 亚洲网站视频福利| 亚洲视频第一页| 亚洲午夜精品视频| 亚洲一区二区三区免费观看 | 激情五月综合色婷婷一区二区| 国产区日韩欧美| 国产亚洲福利社区一区| 国产一区二区三区无遮挡| 国产亚洲毛片在线| 狠狠色噜噜狠狠色综合久| 激情久久中文字幕| 亚洲黄色一区二区三区| 亚洲精品欧美一区二区三区| 亚洲激情一区| 一区二区三区免费观看| 亚洲影院一区| 久久精品日产第一区二区三区 | 亚洲最新在线| 亚洲欧美国产高清| 久久精品一区蜜桃臀影院| 久久久久久97三级| 亚洲第一搞黄网站| 日韩亚洲欧美中文三级| 亚洲女人天堂av| 久久精品久久综合| 欧美国产日韩精品免费观看| 欧美日韩国产精品自在自线| 国产精品xvideos88| 国产欧美精品日韩区二区麻豆天美 | 欧美激情va永久在线播放| 亚洲激情欧美| 亚洲男女自偷自拍| 麻豆成人在线观看| 国产精品美女诱惑| 在线观看欧美激情| 一区二区三区欧美成人| 久久国产日韩欧美| 亚洲国产欧美国产综合一区 | 欧美成年人网| 一区二区欧美激情| 久久夜色精品一区| 欧美日韩在线观看一区二区| 国产日韩欧美精品| 日韩亚洲成人av在线| 欧美一区二区精品久久911| 欧美激情aaaa| 香蕉乱码成人久久天堂爱免费| 欧美精品v国产精品v日韩精品| 国产日产欧产精品推荐色| 91久久精品国产91久久| 欧美影院成年免费版| 亚洲国产网站| 久久久久国产精品一区二区| 欧美丝袜一区二区三区| 亚洲国产精品悠悠久久琪琪| 欧美亚洲自偷自偷| av成人免费在线| 女同性一区二区三区人了人一 | 国产精品久久久久影院色老大| 91久久夜色精品国产九色| 欧美在线免费一级片| 99综合精品| 欧美激情中文不卡| 亚洲国产精品成人综合色在线婷婷|