101392024-03-28 00:19:22111Turista járatokcpp17Időlimit túllépés 10/100349ms31552 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N,M,K;
	cin>>N>>M>>K;
	vector<vector<pair<int,int>>>g(N+1);
	for(int i=0;i<M;i++){
		int a,b;
		cin>>a>>b;
		g[a].emplace_back(b,i<K);
		g[b].emplace_back(a,i<K);
	}
	vector<int>v(N+1),w(N+1),u(N+1);
	auto dfs=[&](auto self,int i)->void{
		w[i]=i;
		for(auto[j,b]:g[i]){
			if(v[j]){
				if(v[j]>v[i]&&b){
					if(w[j]==i||w[j]==j){
						u[j]=1;
					}
					else{
						for(auto[k,_]:g[w[j]]){
							if(v[k]<v[w[j]]){
								continue;
							}
							u[k]=1;
						}
					}
				}
				if(v[j]>=v[i]-1){
					continue;
				}
				if(v[j]<v[w[i]]){
					w[i]=j;
				}
				continue;
			}
			v[j]=v[i]+1;
			self(self,j);
			if(v[w[j]]<v[w[i]]){
				w[i]=w[j];
			}
			if(b){
				if(w[j]==i||w[j]==j){
					u[j]=1;
				}
				else{
					for(auto[k,_]:g[w[j]]){
						if(v[k]<v[w[j]]){
							continue;
						}
						u[k]=1;
					}
				}
			}
		}
	};
	v[1]=1;
	dfs(dfs,1);
	vector<int>ans;
	auto dfs2=[&](auto self,int i,int b)->void{
		if(b){
			ans.push_back(i);
		}
		for(auto[j,_]:g[i]){
			if(v[j]!=v[i]+1){
				continue;
			}
			self(self,j,b||u[j]);
		}
	};
	dfs2(dfs2,1,0);
	if(1){
		vector<int>v(N+1),u(N+1);
		auto bt=[&](auto self,int i,int b)->void{
			if(v[i]){
				return;
			}
			if(b){
				u[i]=1;
			}
			v[i]=1;
			for(auto[j,x]:g[i]){
				self(self,j,b||x);
			}
			v[i]=0;
		};
		bt(bt,1,0);
		vector<int>ans1;
		for(int i=1;i<=N;i++){
			if(u[i]){
				ans1.push_back(i);
			}
		}
		if(ans1.size()!=ans.size()){
			ans=ans1;
		}
	}
	cout<<ans.size()<<'\n';
	for(int i:ans){
		cout<<i<<' ';
	}
	cout<<'\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Időlimit túllépés300ms2796 KiB
subtask20/10
3Elfogadva3ms2236 KiB
4Elfogadva3ms2332 KiB
5Elfogadva3ms2548 KiB
6Elfogadva3ms2760 KiB
7Időlimit túllépés300ms2832 KiB
subtask310/10
8Elfogadva3ms2980 KiB
9Elfogadva2ms3052 KiB
10Elfogadva3ms3192 KiB
11Elfogadva3ms3504 KiB
12Elfogadva4ms4464 KiB
subtask40/10
13Elfogadva8ms5504 KiB
14Elfogadva4ms3276 KiB
15Időlimit túllépés273ms3504 KiB
16Időlimit túllépés273ms3872 KiB
17Időlimit túllépés275ms30756 KiB
18Időlimit túllépés349ms9268 KiB
19Időlimit túllépés254ms11468 KiB
20Időlimit túllépés335ms9696 KiB
subtask50/10
21Időlimit túllépés273ms4580 KiB
22Elfogadva159ms3980 KiB
23Időlimit túllépés331ms3896 KiB
24Időlimit túllépés261ms4048 KiB
25Időlimit túllépés337ms19240 KiB
26Időlimit túllépés284ms4604 KiB
27Időlimit túllépés273ms4676 KiB
subtask60/60
28Időlimit túllépés277ms4456 KiB
29Időlimit túllépés349ms4528 KiB
30Időlimit túllépés344ms3720 KiB
31Időlimit túllépés261ms4024 KiB
32Időlimit túllépés277ms4184 KiB
33Időlimit túllépés264ms4236 KiB
34Időlimit túllépés284ms4948 KiB
35Időlimit túllépés256ms5116 KiB
36Időlimit túllépés273ms5000 KiB
37Időlimit túllépés266ms31552 KiB
38Időlimit túllépés286ms10148 KiB
39Időlimit túllépés270ms10328 KiB
40Időlimit túllépés266ms10144 KiB
41Időlimit túllépés257ms10164 KiB
42Időlimit túllépés254ms10096 KiB
43Időlimit túllépés261ms10164 KiB
44Időlimit túllépés273ms10076 KiB
45Időlimit túllépés254ms12052 KiB
46Időlimit túllépés277ms10148 KiB
47Időlimit túllépés286ms10132 KiB
48Időlimit túllépés277ms10172 KiB
49Időlimit túllépés277ms10320 KiB
50Időlimit túllépés266ms10108 KiB