有一張n個點m條邊的有向圖,每條邊有乙個互不相同的邊權w,有q個詢問,要求你從點a經過不超過c條邊到點b,要求經過的邊權遞增並和盡量小,求出最小的邊權和,如果沒有合法方案則輸出-1。
按邊權從小到大加入做floyd即可。
#include
#include
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
const int maxn=150+10,maxm=5000+10,inf=100000000;
struct dong e[maxm];
int f[maxn][maxn][maxn];
int i,j,k,l,t,n,m,q,x,y,z,ans;
bool cmp(dong a,dong b)
fo(i,1,n)
fo(j,1,n)
fo(k,1,n)
f[i][j][k]=min(f[i][j][k],f[i][j][k-1]);
while (q--)
}
樹上最小邊覆蓋問題
1077.皇宮看守 對於一條邊,可以由父節點覆蓋,或者子節點覆蓋,f u 0 表示該節點不放士兵,f u 1 表示該節點放士兵.當該節點不放時,只有由所有子節點放的情況轉移 當該節點放時,可以由子節點放或不放的情況轉移而來 includeusing namespace std const int n...
UVA 10099 最大的最小邊。。
題目連線 這個題很yd,之前一直不知道導遊還要佔乙個容量,所以連樣例都搞不懂。悲催。解法是利用floyd演算法,最後求出那條邊之後再做一下出發就ok了 我的 include include includeusing namespace std int n,m int dis 105 105 int ...
HDU 1350 最小邊覆蓋
將某個人的行程視為二分圖中的乙個節點,用結構體記錄每個節點的資訊 起點時間,終點時間,位置 然後對於每個節點,看它結束後能否提前趕到其他節點,能的話就加邊。然後就用二分圖匹配,算出最小邊覆蓋就可以了。為什麼是最小邊覆蓋,因為乙個計程車走一條邊,囊括所有節點的最少的邊數就是我們要求的最少計程車數。記得...