Cod sursa(job #2393083)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 30 martie 2019 19:33:49
Problema Santa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
#define NMAX 45010
#define BMAX 1<<16
using namespace std;

int n,m,Q,S,E,idc=1,dp[BMAX][20],id[NMAX],low[NMAX];
vector <int> A[NMAX],st,CB;
bool isP=false;

void dfs(int u){
	st.push_back(u);
	id[u]=low[u]=idc++;
	for(int i=0;i<A[u].size();i++){
		if(!id[A[u][i]])dfs(A[u][i]);
		low[u]=min(low[u],low[A[u][i]]);
	}
	if(id[u]==low[u]){
		while(1){
			int v=st.back();
			if(low[u]==1){
				CB.push_back(v);
				isP|=(v==E);
			}
			st.pop_back();
			if(id[v]==low[u])break;
		}
	}
}

int main(){
	ifstream cin("santa.in");
	ofstream cout("santa.out");
	cin>>n>>m;
	for(int i=0;i<n;i++){
		int a,b;
		cin>>a>>b;
		A[a].push_back(b);
		A[b].push_back(a);
	}
	cin>>Q>>S>>E;
	dfs(E);
	int l=CB.size();
	if(isP){
		cout<<l-1<<'\n';
		for(int i=l-1;i>0;i--){
			cout<<CB[i]<<' ';
		}	
	}else{
		cout<<"No chance\n";
	}
}