环检测
完整源码
#include <iostream>
#include <vector>
#include <tuple>
#include <stack>
#include <map>
using namespace std;
int V, E;
map<int, vector<tuple<int , int , double>>> EWD;
bool marked[100];
bool onStack[100];
tuple<int , int , double> edgeTo[100];
stack<tuple<int , int , double>> cycle;
void dfs(int v) {
onStack[v] = true;
marked[v] = true;
for(vector<tuple<int, int, double>>::iterator ii = EWD[v].begin(); ii != EWD[v].end(); ii++)
{
int w = get<1>(*ii);
if(!cycle.empty()) {
return;
}
else if(!marked[w]) {
edgeTo[w] = *ii;
dfs(w);
}
else if(onStack[w]) {
tuple<