#include "iostream"
#include "fstream"
#include "sstream"
#include "string"
#include "vector"
using
namespace
std;
struct record
;struct list
;typedef
vector
g;int n, m, s;
double v;
bool isvisited[101] = ;
int a, b;
double r1, c1, r2, c2;
static
bool isyes = false;
inline
double convert(double money, double rate, double commision)
void func(int sort, double money, const
vector
&graph,
vector
>& money,vector
& indegree)
return;
}isvisited[sort] = true;
for (int it = 0; it != temp.size()&&isyes!=true; ++it)//
isvisited[sort] = false;
}int main()
; graph[a].ptr.push_back(temp1);//存入乙個相鄰節點
record temp2 = ;
graph[b].ptr.push_back(temp2);
++indegree[a], ++indegree[b];//入度加一
} }}
//尋找乙個環,起點為s
money[s].push_back (v);
func(s,v,graph,money,indegree);
if (isyes)
cout
<< "yes"
<< endl;
else
cout
<< "no"
<< endl;
return
0;}
#include "iostream"
#include "fstream"
#include "sstream"
#include "string"
#include "vector"
using
namespace
std;
int n, m, s,a,b;
double r1,c1,r2,c2,v;
const
double inf = 1000000000;
struct edge
;typedef
vector
e;typedef
vector
dis;
bool relax(edge& one_edge,dis &d)
else
return
false;
}bool bellman_ford(e edge,dis &d)
if (d[s] > v) return
true;
if (!flag) return
false;//本次遍歷沒有進行鬆弛,且沒有找到正環
}//檢測是否找到正環
for (auto &it : edge)
if (relax(it,d)) return
true;//如果還能鬆弛,說明存在正環
return
false;
}int main()
, temp2 = ;
edge.push_back(temp), edge.push_back(temp2);
}bool ans = bellman_ford(edge, d);
if (ans)
cout
<< "yes"
<< endl;
else
cout
<< "no"
<< endl;
return
0;}
poj1860 解題報告
題意 這裡有n種貨幣,分別記為1 n,有m種貨幣交換的方式,每一種方式有a,b兩種錢幣,有rab,cab,rba and cba,四個數,表示交換率,nick手上有其中的一種貨幣s,貨幣s的錢數為v,問你能否通過一定次數的錢幣交換讓nick手中的錢增加 分析 這裡是要判斷迴路,那麼可以用spfa 加...
Bacon Number 兩種解法
view code 題目 cid 567 題目分析 與longth way 類似 這個好象就是傳說中的六度人脈,你只要通過六度人脈就可以找到世界上的任何乙個人。假設乙個人一生會認識n個人,那n n 1 n 2 n 3 n 4 n 5 n 6 世界總人數。給定一些邊確定乙個圖,即給定一些點之間的連通情...
The Longest Path 兩種解法
view code 題目 cid 567 題目分析 給定一些邊確定乙個圖,即給定一些點之間的連通情況,保證給定的圖沒有迴路,要求輸出該圖存在的最長路徑。思路分析 根據給定資訊構造圖,用鄰接表表示。鄰接矩陣明顯很麻煩且效率不高 將每乙個頂點看成是樹根,求出樹的高度。得到一系列樹的高度,最大的那個就是圖...