#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |