计蒜客:农场看守(DFS、欧拉回路)

输入样例:
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 }
浙公网安备 33010602011771号