輸入樣例:
4 5 1 2 1 4 2 3 2 4 3 4
輸出樣例:
1 2 3 4 2 1 4 3 2 4 1
直接對邊訪問陣列進行維護的同時,一次dfs就能走完兩遍。
沒想明白為啥尤拉回路可以這樣做。
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n, m; 4 vector<pair<int,bool>> graph[10005]; 5 void dfs(int p) { 6 for (int i = 0; i < graph[p].size(); ++ i) { 7 if (!graph[p][i].second){ 8 graph[p][i].second = true; 9 dfs(graph[p][i].first); 10 } 11 } 12 cout << p << endl; 13 } 14 int main() { 15 cin >> n >> m; 16 while(m --) { 17 int s, e; 18 cin >> s >> e; 19 graph[s].push_back(make_pair(e,false)); 20 graph[e].push_back(make_pair(s,false)); 21 } 22 dfs(1); 23 }