제출 #1035783

#제출 시각아이디문제언어결과실행 시간메모리
1035783vjudge1어르신 집배원 (BOI14_postmen)C++17
0 / 100
12 ms23900 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define pii pair<int, int> #define pll pair<ll, ll> #define pld pair<ld, ld> #define pb push_back #define fi first #define se second #define debug(x) cout << #x << " => " << x << endl #define all(x) x.begin(),x.end() set<int> adj[500010]; bool vis[500010]; stack<int> st; int cnt=0; void dfs(int u,int p) { // debug(u); st.push(u); if(vis[u]) { cout<<st.top()<<' '; st.pop(); vis[u]=0; cnt=0; int prev=u; while(!st.empty() && st.top()!=u) { cnt++; int x=st.top(); adj[prev].erase(adj[prev].find(x)); adj[x].erase(adj[x].find(prev)); cout<<x<<' '; vis[x]=0; prev=x; st.pop(); } adj[prev].erase(adj[prev].find(u)); adj[u].erase(adj[u].find(prev)); cout<<'\n'; return; } vis[u]=1; reset: for(auto i : adj[u]) { if(i!=p) { dfs(i,u); if(cnt--) return; goto reset; } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n,m;cin>>n>>m; for(int i=0;i<m;i++) { int u,v;cin>>u>>v; adj[u].insert(v); adj[v].insert(u); } cout<<'\n'; for(int i=1;i<=n;i++) { while(!adj[i].empty()) dfs(i,-1); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...