Submission #1160370

#TimeUsernameProblemLanguageResultExecution timeMemory
1160370LudisseySenior Postmen (BOI14_postmen)C++20
38 / 100
1096 ms12000 KiB
#include <bits/stdc++.h> #define sz(a) (int)a.size() #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define int long long using namespace std; vector<vector<pair<int,int>>> neigh; vector<int> circuit; vector<bool> edvisit; signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n,m; cin >> n >> m; neigh.resize(n); edvisit.resize(m); for (int i = 0; i < m; i++) { int u,v; cin >> u >> v; u--; v--; neigh[u].push_back({v,i}); neigh[v].push_back({u,i}); } stack<int> path; int u=0; while(true){ bool b=false; for (auto v : neigh[u]) { if(edvisit[v.second]) continue; b=true; edvisit[v.second]=true; path.push(u); u=v.first; break; } if(b) { continue; } circuit.push_back(u); if(path.empty()) break; u=path.top(); path.pop(); } vector<vector<int>> out; vector<int> visited(n); stack<int> q; for (int i = 0; i < sz(circuit); i++) { if(visited[circuit[i]]){ out.push_back({circuit[i]}); while(!q.empty()&&q.top()!=circuit[i]){ out.back().push_back(q.top()); visited[q.top()]=false; q.pop(); } out.back().push_back(circuit[i]); }else{ q.push(circuit[i]); visited[circuit[i]]=true; } } for (int i = 0; i < sz(out); i++) { for (int j = 0; j < sz(out[i])-1; j++) cout << out[i][j]+1 << " "; cout << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...