基礎最短路六 POJ3259

2021-07-28 20:23:22 字數 823 閱讀 5317

poj3259:

n為500,m為2500

題目大意:有乙個人在n個點之間走來走去。n個點之間有雙向的道路,也有單向的 可以回到幾秒前的蟲洞。

問: 存不存在一種走法,走來走去走來走去,走回到起點的時候,時間剛好在自己出發以前?

又是乙個spfa尋找負環問題!

輸入蟲洞的時候,權改為負數。

輸出的是    「yes」 和「 no」   而不是「yes」和「no」......../(ㄒoㄒ)/~~

壯我spfa

開心的使用spfa:

#include"cstdio"

#include"iostream"

#include"cstring"

#include"algorithm"

#include"vector"

#include"cmath"

#include"queue"

using namespace std;

#define inf 9999999

#define inf 1009

#define loop(x,y,z) for(x=y;xedge[inf];

queueq;

void init()

bool spfa()}}

}return true;

}int main()

while(p--)

bool t=spfa();

if(t)printf("no\n");

else printf("yes\n");

}return 0;

}

POJ 3259 有負權的最短路 SPFA

include include define m 600 define oo 999999 int n,m,w int map m m int dis m int time m 記錄某個點入隊的次數 int que m m bool v m 是否更新過 bool inq m 是否已經在佇列中 int...

POJ3259負環判定

題意 有n個頂點,m條邊,然後有w個洞,過每個洞的時間為 ti,求是否會時光倒流 分析 就是求是否存在負圈,用bellman floyd判定是否存在負圈即可,注意是無向圖,所以路徑是雙向可達的 1 include 2 include 3 include 4 include 5 include 6 i...

基礎最短路 二 POJ 2253

poj2253 青蛙跳 n為200。題意為 給出n個石頭,每個石頭給出他們的x和y座標。乙隻青蛙在這些石頭上面跳來跳去。但是青蛙跳躍能力有限。需要求的是,青蛙從石頭1跳到石頭2上,對他的跳躍能力要求最低為多少。也就是石頭1到石頭2路徑上,的最大邊,最小可以為多少。這裡dis陣列儲存的就不是原點到各點...