COGS 426 血帆海盜 最小割 強連通分量

2021-06-29 13:44:45 字數 1886 閱讀 4042

隨著資本的擴大,藏寶海灣**親王在卡利姆多和東部王國大陸各建立了 n/2 個港口。大災變發生以後,這些港口之間失去了聯絡,相繼脫離了藏寶海灣**親王的管轄,各自為政。

利益的驅動使得每個港口都想和對岸大陸的另乙個港口建立**合作關係,由於地理位置因素,只有存在直接到達的航線的兩個港口才能建立合作,而且每個港口只與對岸乙個港口建立合作,因此並不是所有的港口都能找到合作夥伴。

血帆海盜得知這一訊息以後,決定對其中一條航線進行干擾性的掠奪。經過分析,血帆海盜計算出最多能有 w 對港口合作。如果兩個港口之間只有一條航線,而且這條航線恰好是血帆海盜要掠奪的航線,這兩個港口將不能建立合作關係。血帆海盜指揮官菲爾拉倫想知道他們有幾種選擇,可以讓地精們無法建立 w 對港口。

第 1行,兩個整數 n,m,表示一共的港口個數和航線條數。 接下來 m行,每行兩個整數 a,b,表示卡利姆多的港口 a與東部王國的港口 b之間有一

條航線直接連線,其中 1<=a<=n/2,n/2+1<=b<=n。

輸出格式

l 乙個整數,表示血帆海盜可以選擇掠奪的航線條數。

解釋:如果掠奪一條航線以後,地精依然可以建立起最多的 w個合作關係(可以有多種),

那麼這條航線是不值得掠奪的,否則就是掠奪方案之一。

8 5

1 5

1 6

2 7

3 7

4 8

樣例輸出

1地精做多能建立起合作關係的數量為 3,掠奪(4,8)這條航線後,最多能建立的合作關係的數量減少為 2。

40%的資料滿足 2<=n<=200,1<=m<=1000

100%的資料滿足 2<=n<=100000,1<=m<=100000,保證 n為偶數

#include 

#include

#include

#include

#include

#include

using

namespace

std ;

const

int inf = 1

<<27 ;

const

int n = 1e5 + 11 ;

const

int m = 2e6 + 11 ;

int head[n] , flow[m] , to[m] , from[m] , info[m] ; int nedge ;

int dis[n] , gap[n] ; int gnode ;

int instack[n] , belong[n] , low[n] , dfn[n] ; int color ; int vist ;

vector

stk ;

int source , sink ;

int n , m ;

void add_edge(int a , int b , int c)

void init()

for(int i = 1 ; i+i <= n ; ++i)

}int dfs(int u , int limit)

minh = min(minh , dis[v]) ;}}

if(f1 == 0)

return f1 ;

}void sap()

}void dfs(int u ) else

if(instack[v] == 1) }}

if(dfn[u] == low[u])

belong[u] = color ;

instack[u] = 2 ;

stk.pop_back() ;

}}void tarjan()

}}int main()

printf("%d\n" , ans) ;

}}

COGS血帆海盜

對於已經增廣後的圖,會出現一些反向邊,首先跑一邊最大流,只有對於被增廣的路才有可能成為答案,考慮每一條被曾廣的路,如果他在殘留網路中兩個端點在同乙個強連通分量裡,必然有其他的路徑可以代替這條邊,比如圖中1 2 3 4 構成乙個環3 2 1 4 3,3 2可以替代原來的1 2,所以只有那些被增廣後,起...

COGS902 樂曲主題

這個題一開始想的是hash 列舉長度 sort尋重o n2lo g2n 50002 12 3 108,但是模乙個數就wa了,模兩個數就t了 卡得不行不行的。問題在於,實際上長度顯然是單調合法的 如果len行,則小於len一定行 所以我們可以變列舉為二分。巨集哥orz 這也正是我沒有想到的了,最近總是...

COGS 2259 異化多肽

qaq 很明顯我們是可以搞一下指數生成函式的 然而複雜度是o m n2 o m n2 無法優化 換個方式做生成函式 a x 表示 質量為 x 的 氨基酸有幾類 b x i 0 a x i b x i 0 a x i 顯然答案是b x 中的n次項係數 上面的式子即為乙個無限等比數列求和 度度的公式s ...