差分約束
學習鏈結
題意:給一些限制條件,求1到n的最大距離,可轉化成求最短路徑,將不等式化成 <= 的形式
有負邊,要用spfa,不能用dijkstra演算法
**如下:
#include#include#include#include#include#include#include#include#include#include#include#include#define n 1005
#define inf 0x7ffffff
#define eps 1e-9
#define pi acos(-1.0)
#define p system("pause")
using namespace std;
int mp[n][n],vis[n],dist[n],co[n];
queueq ;
int n;
int spfa(int s)
}vis[temp] = 0;
}return 1;
}int main()
while(y--)
// s1-s0 >=0???
for(i = 1; i < n; i++)
mp[i][i+1] = 0;
int k = spfa(1);
if(k == -1) printf("-1\n");//存在負圈的情況
else if(dist[n] == inf) printf("-2\n");//不連通的情況
else printf("%d\n",dist[n]);
}return 0;
}
HDU 3592(差分約束)
題意 n個人編號分別是1 n在排隊,排隊順序與序號相同。現在有x個喜歡關係和y個厭惡關係 對於每乙個喜歡關係 a b c 代表編號a和編號c之間的距離需要 c 對於每乙個厭惡關係 a b c 代表編號a和編號c之間的距離需要 c 問在能否滿足條件,如果滿足條件求1 n之間的最大距離,如果距離無限大輸...
HDU 3592(差分約束)
2015 01 07 00 40 57 思路 差分約束題,用si表示 i 距離第1個人的距離。根據條件 1 約束一 s b s a c 2 約束二 s b s a c 因為要求最長可能距離,所以轉化為求最短路。約束一化為 s b s a c,約束二化為 s a s b c 1 include 2 i...
差分約束 hdu 3666
xij ai l bj 0 xij ai u bj 0 兩邊取對數來去除ai,bj前面的係數 有 logbj logai logxij logu logai log bj logl logxij 化成標準差分約束,建圖,spfa,注意乙個竅門,當入隊總數大於2 n m 時就可以輸出no 因為 乙個點...