hdu3592(差分約束)

2021-06-22 19:58:40 字數 842 閱讀 9851

差分約束

學習鏈結

題意:給一些限制條件,求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 因為 乙個點...