計蒜客 闖關遊戲 Spfa判斷環

2021-08-30 06:18:41 字數 992 閱讀 3064

[kuangbin帶你飛【專題六】 最短路][2] ## **題目描述**:

參考spfa演算法,將節點增加或減少的值作為路徑長度,我們要做的是找到每個點到起點的最大路徑。在之前的spfa演算法中,我們是要尋找最短路徑,即 dist[u] + w[u][v] < dist[v] 則更新dist[v]。在此題中,我們需要尋找最長的那條路徑;即 dist[u] + w[u][v] > dist[v],則需要更新dist[v]。在更新的過程中,若更新的某個點的最大路徑為負數,說明不能到達此房間,不要入隊。若最後不能到達目標點或者目標點的最大路徑為負,則判斷為no

注意:在之前的最短路問題中,我們遇到負權值迴路時,則其沒有最短路(可以一直在負權值迴路中繞圈子)。在此題中,我們模擬,當最長路可以不斷增加時,即存在正權值迴路時,我們可以在這個圈子中一直繞。所以若有正環,說明可在此無限增加體力,可直接判斷為yes。

#include using namespace std;

#define max_n 110

#define max_m 500050

#define inf 0x3f3f3f3f

int head[max_m], dist[max_n], vis[max_n], num[max_n], cnt = 0;

struct nodeedge[max_m];

void init(int n)

void add(int x, int y, int val)

void spfa(int n, int v)}}

}}if(dist[n] > 0)

cout << "yes";

else

cout << "no";

}int main()

}spfa(n, 1);

return 0;

}

計蒜客 判斷質數

判斷質數 對於大於1的數,如果除了1和它本身,它不能再被其它正整數整除,那麼我們說它是乙個質數。曉萌想判斷乙個數是不是質數,希望找你寫個程式,幫助她進行判斷。輸入包括一行,為乙個整數n 1 n 1000 正是曉萌給出你讓你判斷的數字。輸出包括一行,如果曉萌給出的整數n為質數,那麼輸出yes 如果n不...

計蒜客 乘法遊戲

乘法遊戲是在一行牌上進行的。每一張牌包括了乙個正整數。在每乙個移動中,玩家拿出一張牌,得分是用它的數字乘以它左邊和右邊的數,所以不允許拿第1張和最後1張牌。最後一次移動後,這裡只剩下兩張牌。你的目標是使得分的和最小。例如,如果數是10 1 50 20 5,依次拿1 20 50,總分是10 1 50 ...

計蒜客 跳躍遊戲

給定乙個非負整數陣列,假定你的初始位置為陣列第乙個下標。陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。請確認你是否能夠跳躍到陣列的最後乙個下標。例如 a 2,3,1,1,4 return true.a 3,2,1,0,4 return false.格式 第一行輸入乙個正整數n,接下來的一行,輸...