隨著資本的擴大,藏寶海灣**親王在卡利姆多和東部王國大陸各建立了 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 ...