10139 2024. 03. 28 00:19:22 111 Turista járatok cpp17 Időlimit túllépés 10/100 349ms 31552 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 Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1828 KiB
2 Időlimit túllépés 300ms 2796 KiB
subtask2 0/10
3 Elfogadva 3ms 2236 KiB
4 Elfogadva 3ms 2332 KiB
5 Elfogadva 3ms 2548 KiB
6 Elfogadva 3ms 2760 KiB
7 Időlimit túllépés 300ms 2832 KiB
subtask3 10/10
8 Elfogadva 3ms 2980 KiB
9 Elfogadva 2ms 3052 KiB
10 Elfogadva 3ms 3192 KiB
11 Elfogadva 3ms 3504 KiB
12 Elfogadva 4ms 4464 KiB
subtask4 0/10
13 Elfogadva 8ms 5504 KiB
14 Elfogadva 4ms 3276 KiB
15 Időlimit túllépés 273ms 3504 KiB
16 Időlimit túllépés 273ms 3872 KiB
17 Időlimit túllépés 275ms 30756 KiB
18 Időlimit túllépés 349ms 9268 KiB
19 Időlimit túllépés 254ms 11468 KiB
20 Időlimit túllépés 335ms 9696 KiB
subtask5 0/10
21 Időlimit túllépés 273ms 4580 KiB
22 Elfogadva 159ms 3980 KiB
23 Időlimit túllépés 331ms 3896 KiB
24 Időlimit túllépés 261ms 4048 KiB
25 Időlimit túllépés 337ms 19240 KiB
26 Időlimit túllépés 284ms 4604 KiB
27 Időlimit túllépés 273ms 4676 KiB
subtask6 0/60
28 Időlimit túllépés 277ms 4456 KiB
29 Időlimit túllépés 349ms 4528 KiB
30 Időlimit túllépés 344ms 3720 KiB
31 Időlimit túllépés 261ms 4024 KiB
32 Időlimit túllépés 277ms 4184 KiB
33 Időlimit túllépés 264ms 4236 KiB
34 Időlimit túllépés 284ms 4948 KiB
35 Időlimit túllépés 256ms 5116 KiB
36 Időlimit túllépés 273ms 5000 KiB
37 Időlimit túllépés 266ms 31552 KiB
38 Időlimit túllépés 286ms 10148 KiB
39 Időlimit túllépés 270ms 10328 KiB
40 Időlimit túllépés 266ms 10144 KiB
41 Időlimit túllépés 257ms 10164 KiB
42 Időlimit túllépés 254ms 10096 KiB
43 Időlimit túllépés 261ms 10164 KiB
44 Időlimit túllépés 273ms 10076 KiB
45 Időlimit túllépés 254ms 12052 KiB
46 Időlimit túllépés 277ms 10148 KiB
47 Időlimit túllépés 286ms 10132 KiB
48 Időlimit túllépés 277ms 10172 KiB
49 Időlimit túllépés 277ms 10320 KiB
50 Időlimit túllépés 266ms 10108 KiB