제출 #1262409

#제출 시각아이디문제언어결과실행 시간메모리
1262409aVe어르신 집배원 (BOI14_postmen)C++20
38 / 100
1097 ms23868 KiB
#include <bits/stdc++.h> using namespace std; ///#define int long long const int maxn=5e5+10; const int mod=1e9+7; const int logn=17; int n,m; vector<pair<int,int>>g[maxn]; ///int deg[maxn]; bool vis[maxn]; ///bool mark[maxn]; /* void subtsz(int node,int par) { dp[node]=1; for(auto ax:g[node]) { if(vis[ax] || ax==par)continue; subtsz(ax,node); dp[node]=dp[ax]+1; } } int cen(int node,int par,int tsz) { for(auto ax:g[node]) { if(ax==par || vis[ax])continue; if(2*dp[ax]>tsz)///>= { return cen(ax,node,tsz); } } return node; } void b_c_d(int node,int par) { subtsz(node,-1);///node za par int centroid=cen(node,-1,dp[node]); vis[centroid]=1; cen_par[centroid]=par; for(auto ax:g[centroid]) { if(!vis[ax]) { b_c_d(ax,centroid); } } }*/ vector<int>v; int ma[maxn]; void dfs(int node,int par) { for(auto ax:g[node]) { int sosed=ax.first; int idx=ax.second; if(vis[idx] || sosed==par)continue; vis[idx]=1; dfs(sosed,node); } v.push_back(node); } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n,m; cin>>n>>m; for(int i=0;i<m;i++) { int a,b; cin>>a>>b; a--;b--; g[a].push_back({b,i}); g[b].push_back({a,i}); ///deg[a]++; ///deg[b]++; } /*for(int i=0;i<n;i++) { if(deg[i]%2==1) { cout<<-1<<endl; return 0; } }*/ dfs(0,-1); reverse(v.begin(),v.end()); vector<vector<int>>ans; vector<int>now; for(int i=0;i<v.size();i++) { v[i]++; now.push_back(v[i]); if(ma[now.back()]==1) { vector<int>A; A.push_back(now.back()); now.pop_back(); ///ma[now.back()]--; while(now.back()!=v[i]) { if(now.back()==v[i])break; A.push_back(now.back()); ma[now.back()]--; now.pop_back(); } ans.push_back(A); } else { ma[v[i]]++; } } for(int i=0;i<ans.size();i++) { for(int j=0;j<ans[i].size();j++) { cout<<ans[i][j]<<" "; } cout<<endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...