Submission #1161749

#TimeUsernameProblemLanguageResultExecution timeMemory
116174912345678Senior Postmen (BOI14_postmen)C++20
100 / 100
429 ms103700 KiB
#include <bits/stdc++.h> using namespace std; const int nx=5e5+5; int n, m, u, v, used[nx], cy[nx], t; vector<pair<int, int>> d[nx]; vector<int> res[nx]; void dfs(int u, int pidx, int p) { //cout<<"debug "<<u<<' '<<p<<'\n'; for (auto [v, idx]:d[u]) { if (used[idx]||v==p) continue; cy[u]=1; if (cy[v]==1) { //cout<<"find cycle "<<v<<'\n'; cy[v]=2; used[idx]=1; res[t].push_back(v); } else { dfs(v, idx, u); } if (cy[u]==1) { //cout<<"go back "<<u<<'\n'; cy[u]=0; res[t].push_back(u); used[pidx]=1; return; } if (cy[u]==2) t++; } } int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>m; for (int i=1; i<=m; i++) cin>>u>>v, d[u].push_back({v, i}), d[v].push_back({u, i}); for (int i=1; i<=n; i++) dfs(i, -1, -1); for (int i=0; i<t; i++) { for (auto x:res[i]) cout<<x<<' '; cout<<'\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...