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

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 極限定律 閱讀(1575) 評(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年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在线| 日韩午夜激情| 在线观看91久久久久久| 亚洲私人影院| 99国产精品久久久久久久| 性刺激综合网| 欧美一级大片在线观看| 欧美日韩成人在线播放| 欧美激情亚洲精品| 国产在线国偷精品产拍免费yy| 一区二区三区 在线观看视频| 1024成人| 久久综合亚洲社区| 美日韩精品视频免费看| 国产亚洲人成a一在线v站| 亚洲直播在线一区| 亚洲女人av| 国产精品成人一区二区| 91久久精品国产91性色tv| 亚洲国产91| 蜜桃久久av一区| 欧美国产一区二区在线观看 | 亚洲国产裸拍裸体视频在线观看乱了| 亚洲免费视频中文字幕| 欧美一区二区三区精品电影| 国产精品国产三级国产普通话蜜臀 | 久久久精品午夜少妇| 国产麻豆91精品| 亚洲欧美一级二级三级| 欧美一区国产在线| 国产一区二区精品久久91| 欧美中文在线观看| 蜜臀久久99精品久久久画质超高清| 国产一区二区在线观看免费播放 | 久久久999精品| 美女国产精品| 亚洲人成绝费网站色www| 免费观看久久久4p| 亚洲激情成人在线| 亚洲午夜激情网站| 国产精品一区二区男女羞羞无遮挡| 亚洲影院污污.| 久久香蕉国产线看观看av| 在线观看日韩av| 欧美精品一区二区精品网| 亚洲深爱激情| 久久久久九九九九| 亚洲人线精品午夜| 欧美色123| 欧美在线视频观看免费网站| 欧美大片在线观看| 亚洲在线观看| 在线看无码的免费网站| 欧美日韩mp4| 久久av一区二区三区| 亚洲国产成人午夜在线一区| 亚洲一区视频| 亚洲国产99| 国产精品久久久久久av福利软件 | 一本色道**综合亚洲精品蜜桃冫 | 亚洲国产精品免费| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 久久国产视频网站| 亚洲日本电影| 国产欧美一区二区精品仙草咪| 免费国产一区二区| 中文精品一区二区三区| 欧美成人中文字幕| 欧美一区二区三区免费观看视频 | 一二三区精品福利视频| 黑人巨大精品欧美黑白配亚洲| 欧美人妖在线观看| 久久在线免费视频| 亚洲欧美在线播放| 亚洲精品无人区| 欧美a级片网站| 久久久蜜桃一区二区人| 亚洲一本大道在线| 亚洲精品国产精品乱码不99| 国产日韩av一区二区| 欧美日精品一区视频| 欧美jizz19性欧美| 久久精品视频va| 亚洲免费在线电影| 一区二区三区四区五区精品| 亚洲高清毛片| 免费久久99精品国产| 久久精品国产亚洲一区二区| 亚洲午夜精品一区二区三区他趣| 亚洲人成亚洲人成在线观看图片| 欧美三级电影一区| 欧美日本韩国在线| 欧美va天堂| 久久精品在线播放| 性伦欧美刺激片在线观看| 亚洲一区精品在线| 亚洲午夜视频在线| 日韩一区二区精品视频| 亚洲精选成人| 日韩一级大片在线| 夜夜嗨av一区二区三区免费区| 亚洲国产欧美国产综合一区| 亚洲高清不卡| 亚洲黄色成人久久久| 亚洲国产一区二区三区在线播 | 一区二区三区 在线观看视| 一本久久精品一区二区| 亚洲精品中文字幕在线| 9久re热视频在线精品| 日韩亚洲不卡在线| 亚洲小说欧美另类婷婷| 亚洲欧美日本日韩| 欧美一区二区三区视频在线| 欧美在线视频全部完| 久久精品一本久久99精品| 久久成人精品| 久久久亚洲国产天美传媒修理工| 久久久噜噜噜久久中文字免| 免费中文字幕日韩欧美| 欧美黄色免费| 欧美日韩日本国产亚洲在线| 欧美午夜剧场| 国产午夜精品美女视频明星a级 | 亚洲精品国产精品乱码不99 | 午夜欧美理论片| 欧美一级二区| 另类尿喷潮videofree | 亚洲精品美女在线观看| 夜夜嗨av色综合久久久综合网| 中文av字幕一区| 欧美影院成人| 美女网站久久| 日韩亚洲欧美成人| 欧美一二三区精品| 男人的天堂亚洲| 国产精品成人一区二区艾草| 国产一区二区中文字幕免费看| 亚洲国产片色| 午夜精品成人在线| 欧美激情欧美激情在线五月| 99热精品在线| 久久久久久久综合狠狠综合| 欧美精品18+| 国产一区二区三区免费观看| 日韩写真视频在线观看| 久久精品国产亚洲aⅴ| 亚洲人成在线观看| 午夜精品电影| 欧美精品自拍偷拍动漫精品| 国产午夜精品视频免费不卡69堂| 亚洲精品国久久99热| 久久国产精品99国产精| 亚洲肉体裸体xxxx137| 性色av一区二区三区在线观看| 欧美激情视频一区二区三区在线播放 | 99视频有精品| 久久久水蜜桃| 这里只有精品在线播放| 麻豆精品一区二区综合av | 国产一区二区三区在线观看精品| 99热精品在线观看| 久久综合久色欧美综合狠狠 | 亚洲美女av在线播放| 久久国产黑丝| 国产精品日韩专区| 亚洲九九精品| 麻豆精品一区二区av白丝在线| 亚洲一区二区成人| 欧美久久成人| 亚洲人成高清| 欧美岛国激情| 久久九九久精品国产免费直播| 国产精品家庭影院| 在线视频你懂得一区二区三区| 欧美超级免费视 在线| 欧美一区2区三区4区公司二百| 欧美午夜寂寞影院| 99视频有精品| 最新亚洲视频| 欧美va天堂在线| 亚洲人成网站777色婷婷| 男男成人高潮片免费网站| 欧美中日韩免费视频| 国产亚洲一区二区在线观看| 午夜在线a亚洲v天堂网2018| 亚洲天堂av在线免费观看| 欧美日韩蜜桃| 亚洲自拍高清| 一区二区三区欧美日韩| 欧美午夜视频网站| 亚洲欧美日韩国产| 亚洲午夜日本在线观看| 国产精品一二三四| 欧美一区二区高清| 午夜精品久久久久久久99黑人| 国产欧美日韩三区| 久久久青草婷婷精品综合日韩| 欧美一区在线看| 在线看不卡av|