題意:給定dag,通過每條邊需要時間。
從某號點回到1號點不需要時間。
從1號點出發,求最少要多久才能走完所有邊。
解:有源匯有上下界最小費用可行流。
直接連邊,費用為時間,下界為1,無上界。
每個點都可能是終點,往t連邊。
1 #include 2 #include 3 #include 4 #include 5ac**6const
int n = 310, m = 1000010, inf = 0x3f3f3f3f;7
8struct
edge edge[m << 1]; int top = 1;11
12int
e[n], d[n], vis[n], pre[n], flow[n], ot[n];
13 std::queueq;
1415 inline void add(int x, int y, int z, int
w) 31
32 inline bool spfa(int s, int
t) 52}53
}54}55
return d[t]
5758 inline void update(int s, int
t) 66
return;67
}6869 inline int solve(int s, int t, int &cost)
77return
ans;78}
7980
intmain()
94 add(i, t, inf, 0
);95}96
for(int i = 1; i <= n; i++)
100else
103}
104 add(t, 1, inf, 0
);105
intans;
106solve(ss, tt, ans);
107 printf("
%d", ans +cost);
108return0;
109 }
洛谷P4043 費用流
這題的建圖方式可以模擬洛谷p1251 我是由那個題才想到這麼建的,由於每條邊至少經過一次,我們又不清楚需要跑多少次,把邊看成點,點與匯點相連,可是我們又不知道最大流應該是多少,直接這麼連會發生錯誤。利用那道題的思想,每條邊最少需要一次,那麼就每條邊看做兩個點,點1和點2,點1有1的流量流向匯點,點2...
BZOJ 3876 支線劇情
支線劇情 故事背景 宅男jyy非常喜歡玩rpg遊戲,比如仙劍,軒轅劍等等。不過jyy喜歡的並不是戰鬥場景,而是類似電視劇集一般的充滿恩怨情仇的劇情。這些遊戲往往都有很多的支線劇情,現在jyy想花費最少的時間看完所有的支線劇情。問題描述 jyy現在所玩的rpg遊戲中,一共有n個劇情點,由1到n編號,第...
數字DP BZOJ 3876 支線劇情
輸入一行包含乙個正整數n。接下來n行,第i行為i號劇情點的資訊 第乙個整數為,接下來個整數對,bij和tij,表示從劇情點i可以前往劇 情點,並且 這段支線劇情需要花費的時間。輸出一行包含乙個整數,表示jyy看完所有支線劇情所需要的最少時間。6 2 2 1 3 2 2 4 3 5 4 2 5 5 6...