給乙個有n個點m條邊的dag,問最多能選出多少個點使得選出的點兩兩不能到達。 n≤
105,m
≤2n n≤10
5,m≤
2n
根據某定理,最長反鏈=最小鏈覆蓋,注意這裡的鏈覆蓋是允許每個點被重複經過的。
當n比較小的時候,我們就可以通過傳遞閉包,將原圖轉為二分圖,然後跑最大匹配就好了。
樸素一點的做法就是把每個點拆點,在它們之間連下界為1的邊,然後跑上下界最小流,能得到較高的分數但還是比較慢。
考慮在建圖的過程中,我們可以直接構造出最大流,也就是把每條s->i->i+n->t都增廣一遍。
然後再考慮最小流的退流過程,那麼轉化後的建圖就變為:s向i連流量為1的邊,i+n向t連流量為1的邊,i+n向i連流量為inf的邊,然後對於圖上一條x->y的邊,從x向y+n連流量為inf的邊。
最後n-最大流即為答案。
#include
#include
#include
#include
#include
#include
const
int n=200005;
const
int inf=1000000000;
int n,m,s,t,cnt,last[n],cur[n],dis[n];
struct edgee[n*10];
std::queue
que;
void addedge(int u,int v,int c)
bool bfs()
}return0;}
int dfs(int x,int maxf)
return ret;
}int dinic()
return ans;
}int main()
for (int i=1;i<=m;i++)
printf("%d",n-dinic());
return
0;}
6 19學習筆記
一.什麼是css3?css3是css技術的公升級版本,css即層疊樣式表 cascading stylesheet 在網頁製作時採用層疊樣式 表技術,可以有效地對頁面的布局 字型 顏色 背景和其 它效果實現更加精確的控制。只要對相應的 做 些簡 單的修改,就可以改變同一頁面的不同部分,或者頁數不同 ...
d619 奇摩知識
內容 不爽寫程式的小光,轉換地方,開始為奇摩知識 奉獻,突然與腿肌同學,發現了某個人所提出來的問題,並展開激烈的討論,最後終於.不過此問題,是某個測試系統的題目.有意義的消音,多半是髒話.題目描述 大家都知道二進位制是由0和1兩種數字組成的,十進位制轉二進位制,小明現在要玩乙個遊戲,就是由1數到n,...
COGS 619 傳話 解題報告
janis 問題描述 興趣小組的同學來自各個學校,為了增加友誼,晚會上又進行了乙個傳話遊戲,如果 a 認識 b 那麼 a 收到某個訊息,就會把這個訊息傳給 b 以及所有 a 認識的人。如果 a 認識 b b 不一定認識 a 所有人從 1 到 n 編號,給出所有 認識 關係,問如果 i 發布一條新訊息...