判環的方法

2021-08-20 03:26:09 字數 628 閱讀 7339

spfao(n*n)(n為點數)

拓撲排序可以有重邊 o(n)

tarjan實質上也是拓撲排序,這個演算法還有縮點操作

dfs

//給出一組不等式,判斷這組不等式是否矛盾,點的個數<=100000

#include

#include

#define n 200010

using

namespace

std;

bool ok=false,used[n];

int last[n<<1],next[n<<1],end[n<<1],cnt;

void ins(int x,int y)

bool dfs(int p)

int main()

for(int i=1;i<=n;i++)ins(n+1,i);

if(!ok)ok=dfs(n+1);

if(ok)printf("no");

else

printf("yes");

return

0;}

有待完善

單鏈表判環判交問題

摘要 有乙個單鏈表,其中可能有乙個環,也就是某個節點的next指向的是鍊錶中在它之前的節點,這樣在鍊錶的尾部形成一環。1 如何判斷乙個鍊錶是不是這類鍊錶?2 如果鍊錶為存在環,如果找到環的入口點?擴充套件 判斷兩個單鏈表是否相交,如果相交,給出相交的第乙個點。有乙個單鏈表,其中可能有乙個環,也就是某...

Floyd判環演算法

leetcode 142 判斷鍊錶是否存在環,若存在環則返回鍊錶開始入環的第乙個節點,否則返回null。採用快慢雙指標,慢指標每次移動乙個結點,快指標每次移動兩個結點。如圖所示,假設頭節點到入環結點的長度為n,環的長度為k,慢指標移動的步數為x,快指標移動的步數為2x。第一階段 快慢指標在環中相遇 ...

Arbitrage 判最大環

input 套利是指利用貨幣匯率的差異,將一種貨幣的乙個單位轉換為同一貨幣的多個單位。例如,假設1美元買0.5英鎊,1英鎊買10.0法國法郎,1法國法郎買0.21美元。然後,通過兌換貨幣,聰明的交易者可以從1美元開始,購買0.5 10.0 0.21 1.05美元,獲得5 的利潤。您的工作是編寫乙個程...