# |
Author |
Problem |
Lang |
Verdict |
Time |
Memory |
Sent |
Judged |
|
33494405 |
Practice:
monk_z |
263D
- 19
|
C++14 (GCC 6-32)
|
Accepted
|
560 ms
|
9948 KB
|
2017-12-22 06:52:10 |
2017-12-22 06:52:10 |
|
#include<iostream>
#include<vector>
using namespace std;
int n,m,k,p,q,vis[100001],s[100001],e[100001],t=-1,a=-1,f=1,r=0;
vector<vector<int> > v(100001);
void dfs(int i,int c)
{
e[++a]=i;
if(vis[i] and c-vis[i]>k)if(f){while(e[r]!=i)r++;for(int l=r;l<=a;l++)s[++t]=e[l],f=0;}
if(!vis[i])
{
vis[i]=c;
for(int j=0;j<v[i].size();j++)dfs(v[i][j],c+1);
}a--;
}
int main()
{
cin>>n>>m>>k;
for(int i=1;i<=m;i++)cin>>p>>q,v[p].push_back(q),v[q].push_back(p);
dfs(1,1);
cout<<t<<endl;
for(int i=0;i<t;i++)cout<<s[i]<<" ";
}
Click to see test details