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 的利潤。您的工作是編寫乙個程...