3
vector<vector<int>> validArrangement(vector<vector<int>> &pairs) {6
unordered_map<int, stack<int>> adj;7
unordered_map<int, int> in;8
unordered_map<int, int> out;9
// reserve spaces for unordered_map may help in runtime.13
for (int i = 0; i < m; i++) {14
int u = pairs[i][0], v = pairs[i][1];19
// find the starting node23
if (out[i] - in[i] == 1) start = i;26
// Eulerian Circuit -> start at any node27
start = adj.begin()->first;29
vector<vector<int>> ans;30
euler(adj, ans, start);31
reverse(ans.begin(), ans.end());36
void euler(unordered_map<int, stack<int>> &adj, vector<vector<int>> &ans, int curr) {37
auto &stk = adj[curr];38
while (!stk.empty()) {43
ans.push_back({curr, nei});