Submission #702224

#TimeUsernameProblemLanguageResultExecution timeMemory
702224amirhoseinfar1385Potemkin cycle (CEOI15_indcyc)C++17
20 / 100
13 ms2008 KiB
#include<bits/stdc++.h>
using namespace std;
const int maxn=1000+5;
int par[maxn],vis[maxn],len[maxn];
vector<int>adj[maxn];
int n,m;
vector<int>fb,res,resl,resr;
int had;
void solve(int lena=0){
	if((int)fb.size()==0){
		return ;
	}
	for(auto x:fb){
		len[x]=lena;
		vis[x]=1;
	}
	vector<int>fake;
	for(auto x:fb){
		for(auto y:adj[x]){
			if(vis[y]==1){
				if(len[x]>len[y]){
					continue;
				}
				int now=y;
				while(now>0){
					res.push_back(now);
					//cout<<"res "<<now<<" "<<x<<"\n";
					now=par[now];
				}
				now=x;
				while(now>0){
					resr.push_back(now);
					//cout<<"resr "<<now<<" "<<x<<"\n";
					now=par[now];
				}
				resr.pop_back();
				reverse(resr.begin(),resr.end());
				for(auto x:resr){
					res.push_back(x);
				}	
				return ;
			}
			else{
				vis[y]=1;
				len[y]=lena+1;
				par[y]=x;
				fake.push_back(y);
			}
		}
	}
	fb.swap(fake);
	solve(lena+1);
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(int i=0;i<m;i++){
		int u,v;
		cin>>u>>v;
		adj[u].push_back(v);
		adj[v].push_back(u);
	}
	for(int i=1;i<=n;i++){
		for(int i=0;i<=n+1;i++){
			par[i]=vis[i]=len[i]=0;
		}
		fb.clear();
		fb.push_back(i);
		solve();
		if(res.size()>0){
			break;
		}
	}
	if(res.size()==0){
		cout<<"no\n";
	}
	else{
		for(auto x:res){
			cout<<x<<" ";
		}
		cout<<"\n";
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...