BZOJ1202 狡猾的商人 Floyd)

2021-08-19 06:17:43 字數 744 閱讀 2360

看了一眼題意,發現floyd可以做,其實就是判斷是否滿足邊相加的關係成立。

需要注意的是,有可能有這樣的資料,

3 2

1 2 10

3 3 -15

這個也是true的,也就是說,當邊不滿足判斷條件的時候,可以認為補充上一些邊。

或者說,只有發現兩邊相加不等於第三邊的時候,才算false。

這道題也可以用帶權並查集來做。

一看資料範圍才100當然用floyd來做啦!

#include

using

namespace

std;

const

int nmax = 105;

const

int inf = 0x3f3f3f3f;

int w[nmax][nmax];

int t,n,m;

bool floyd()else

if(w[i][k] != inf && w[k][j] != inf)else

if(w[i][k] != inf && w[i][j] != inf)else

if(w[k][j] != inf && w[i][j] != inf)}}

}return

true;

}int main()

printf("%s\n",floyd()?"true":"false");

}return

0;}

bzoj1202 狡猾的商人

如果這個賬本是真的話,那麼對於乙個s,t,在圖上,兩個點之間任意一條路徑的長度都必須相等,不然這個賬本就不是真的。用並查集在維護這個資訊,也就是字首和,字首和就是前i個月收入的錢,那麼對於任意一行資料 s t v 都有 sum s sum t v 然後在並查集的時候,查詢父親節點的時候,將sum值累...

bzoj1202 狡猾的商人

time limit 10 sec memory limit 162 mb submit 3569 solved 1717 submit status discuss 刁奼接到乙個任務,為稅務部門調查一位商人的賬本,看看賬本是不是偽造的。賬本上記錄了n個月以來的收入情況,其中第i 個月的收入額為ai...

BZOJ 1202 狡猾的商人

先處理成字首和關係,然後可以很明顯得看得出這是乙個差分約束。那麼就是最短路問題了。順便複習了一下spfa加slf優化是怎麼寫的,也學習到了另乙個stl deque雙向佇列。include include include include include include include include ...