Submission #1174237

#TimeUsernameProblemLanguageResultExecution timeMemory
1174237ThommyDB어르신 집배원 (BOI14_postmen)C++20
0 / 100
1096 ms16224 KiB
#include<bits/stdc++.h> using namespace std; int n, m; vector<vector<int>> adj, ans; map<pair<int, int>, bool> streetCovered; vector<bool> visited; vector<int> currAns; void showCurrAns(){ cout << "Curr ans: \n"; for(auto u : currAns){ cout << u+1 << " "; } cout << "\n"; } void showVisited(){ cout << "Visited: \n"; for(auto u : visited){ cout << u << " "; } cout << "\n"; } void showStreetCovered(){ cout << "Streets covered: \n"; for(auto u : streetCovered){ cout << u.first.first+1 << " und " << u.first.second+1 << " = " << u.second << "\n"; } } void dfs(int x){ if(visited[x]){ ans.push_back({x}); //showCurrAns(); while(!currAns.empty() && currAns.back()!=x){ ans.back().push_back(currAns.back()); visited[currAns.back()]=false; currAns.pop_back(); } if(!currAns.empty()) currAns.pop_back(); //showCurrAns(); //showVisited(); } visited[x]=true; currAns.push_back(x); while(!adj[x].empty() && streetCovered[{x, adj[x].back()}]) adj[x].pop_back(); for(auto u : adj[x]){ visited[x]=true; if(!currAns.empty() && currAns.back()!=x)currAns.push_back(x); if(streetCovered[{u, x}])continue; streetCovered[{u, x}]=true; streetCovered[{x, u}]=true; dfs(u); } while(!adj[x].empty() && streetCovered[{x, adj[x].back()}]) adj[x].pop_back(); visited[x]=false; } signed main(){ cin >> n >> m; adj.resize(n); visited.resize(n, false); for(int i = 0; i < m; i++){ int u, v; cin >> u >> v; u--; v--; adj[u].push_back(v); adj[v].push_back(u); } for(int i = 0; i < n; i++){ dfs(i); } for(int i = 0; i < ans.size(); i++){ for(int j = 0; j < ans[i].size(); j++){ cout << ans[i][j]+1 << " "; } cout << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...