제출 #790282

#제출 시각아이디문제언어결과실행 시간메모리
790282bane어르신 집배원 (BOI14_postmen)C++17
38 / 100
1088 ms25240 KiB
#include<bits/stdc++.h> using namespace std; #ifdef LOCAL #include "algo/debug.h" #else #define debug(...) 42 #endif #define fr first #define sc second #define mp make_pair #define pb push_back #define pf push_front #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(), x.rend() using ll = long long; using ull = unsigned long long; using str = string; using pii = pair<int,int>; using pll = pair<long long, long long>; const int nax = 500'001; vector<int>flag(nax); vector<vector<pair<int,int>>>adj(nax); vector<int>pracka; void Euler(int v){ for (pii& x : adj[v]){ if (flag[x.sc])continue; flag[x.sc] = 1; Euler(x.fr); } pracka.pb(v); } void solve(){ int n, m; cin >> n >> m; for (int i = 0; i < m; i++){ int a,b; cin >> a >> b; --a,--b; adj[a].pb({b,i}); adj[b].pb({a,i}); } Euler(0); int r = -1; vector<vector<int>>cycles; vector<int>visited(n + 1); stack<int>c; while(r < (int)pracka.size()){ ++r; if (visited[pracka[r]]){ cycles.push_back(vector<int>()); cycles.back().push_back(pracka[r]); while(c.top() != pracka[r]){ visited[c.top()] = 0; cycles.back().push_back(c.top()); c.pop(); } }else{ c.push(pracka[r]); visited[pracka[r]] = 1; } } for (int i = 0; i < (int)cycles.size() - 1; i++){ for (int j : cycles[i])cout << ++j << " "; cout << '\n'; } } int main(){ ios::sync_with_stdio(0); cin.tie(0); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...