欧拉回路

挂一个模板。不懂,不过手玩起来似乎没有问题。

//有向图求欧拉回路,输出路径上的边的编号。复杂度不高于O(n^2)
void dfs(int cur) {
	for (register unsigned int i = 0; i < vec[cur].size(); ++i) {
		int to = vec[cur][i].first, id = vec[cur][i].second;
		if (!vis[id]) {
			vis[id] = true;
			dfs(to);
			stk[++stop] = id;
		}
	}
}
...
dfs(1);
for (register int i = stop; i; --i)
	printf("%d ", stk[i]);
puts("");

你可能感兴趣的:(欧拉回路)