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陣列儲存的就不是原點到各點...