10299 2024. 03. 30 10:56:44 111 Pletykálkodás cpp17 Elfogadva 100/100 61ms 7448 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;
	cin>>N>>M;
	vector<vector<int>>g(N+1);
	for(int i=0;i<M;i++){
		int a,b;
		cin>>a>>b;
		if(i+1==N*(N-1)/2){
			break;
		}
		g[a].push_back(b);
		g[b].push_back(a);
	}
	vector<tuple<int,int,int,int>>c;
	for(int i=1;i<=N;i++){
		vector<int>v(N+1);
		v[i]=-1;
		for(int j:g[i]){
			v[j]=-1;
		}
		for(int j:g[i]){
			for(int k:g[j]){
				if(v[k]<0){
					continue;
				}
				if(v[k]>0){
					c.emplace_back(i,j,v[k],k);
					continue;
				}
				v[k]=j;
			}
		}
	}
	for(auto[a,b,aa,bb]:c){
		vector<int>v(N+1,-1);
		vector<vector<pair<int,int>>>w(2);
		auto dfs=[&](auto self,int i)->void{
			for(int j:g[i]){
				if(v[j]!=-1){
					continue;
				}
				v[j]=v[i];
				self(self,j);
				w[v[i]].emplace_back(i,j);
			}
		};
		v[a]=0;
		v[b]=1;
		v[aa]=0;
		v[bb]=1;
		dfs(dfs,aa);
		dfs(dfs,bb);
		if(count(v.begin(),v.end(),-1)==1){
			vector<pair<int,int>>s;
			for(auto[a,b]:w[0]){
				s.emplace_back(a,b);
			}
			for(auto[a,b]:w[1]){
				s.emplace_back(a,b);
			}
			s.emplace_back(a,aa);
			s.emplace_back(b,bb);
			s.emplace_back(a,b);
			s.emplace_back(aa,bb);
			reverse(w[0].begin(),w[0].end());
			reverse(w[1].begin(),w[1].end());
			for(auto[a,b]:w[0]){
				s.emplace_back(a,b);
			}
			for(auto[a,b]:w[1]){
				s.emplace_back(a,b);
			}
			cout<<s.size()<<'\n';
			for(auto[a,b]:s){
				cout<<a<<' '<<b<<'\n';
			}
			return 0;
		}
	}
	int a=1,b=g[1][0];
	vector<int>v(N+1,-1);
	vector<vector<pair<int,int>>>w(2);
	auto dfs=[&](auto self,int i)->void{
		for(int j:g[i]){
			if(v[j]!=-1){
				continue;
			}
			v[j]=v[i];
			self(self,j);
			w[v[i]].emplace_back(i,j);
		}
	};
	v[a]=0;
	v[b]=1;
	dfs(dfs,a);
	dfs(dfs,b);
	vector<pair<int,int>>s;
	for(auto[a,b]:w[0]){
		s.emplace_back(a,b);
	}
	for(auto[a,b]:w[1]){
		s.emplace_back(a,b);
	}
	s.emplace_back(a,b);
	reverse(w[0].begin(),w[0].end());
	reverse(w[1].begin(),w[1].end());
	for(auto[a,b]:w[0]){
		s.emplace_back(a,b);
	}
	for(auto[a,b]:w[1]){
		s.emplace_back(a,b);
	}
	cout<<s.size()<<'\n';
	for(auto[a,b]:s){
		cout<<a<<' '<<b<<'\n';
	}
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1976 KiB
2 Elfogadva 3ms 2232 KiB
3 Elfogadva 4ms 2772 KiB
subtask2 9/9
4 Elfogadva 3ms 2612 KiB
5 Elfogadva 3ms 2592 KiB
6 Elfogadva 3ms 2780 KiB
subtask3 13/13
7 Elfogadva 17ms 4968 KiB
8 Elfogadva 24ms 4856 KiB
9 Elfogadva 24ms 4884 KiB
subtask4 16/16
10 Elfogadva 14ms 4000 KiB
11 Elfogadva 16ms 4348 KiB
12 Elfogadva 14ms 4416 KiB
subtask5 25/25
13 Elfogadva 3ms 3776 KiB
14 Elfogadva 3ms 3740 KiB
15 Elfogadva 3ms 3984 KiB
16 Elfogadva 3ms 3940 KiB
17 Elfogadva 3ms 3944 KiB
18 Elfogadva 3ms 4064 KiB
19 Elfogadva 3ms 4156 KiB
subtask6 13/13
20 Elfogadva 4ms 4660 KiB
21 Elfogadva 8ms 4592 KiB
22 Elfogadva 4ms 4636 KiB
23 Elfogadva 8ms 5108 KiB
24 Elfogadva 6ms 4776 KiB
25 Elfogadva 6ms 4592 KiB
26 Elfogadva 6ms 4700 KiB
subtask7 24/24
27 Elfogadva 26ms 7364 KiB
28 Elfogadva 35ms 7448 KiB
29 Elfogadva 27ms 7404 KiB
30 Elfogadva 37ms 6848 KiB
31 Elfogadva 41ms 6608 KiB
32 Elfogadva 46ms 6580 KiB
33 Elfogadva 54ms 6372 KiB
34 Elfogadva 61ms 6336 KiB
35 Elfogadva 41ms 6792 KiB
36 Elfogadva 46ms 6480 KiB
37 Elfogadva 54ms 6616 KiB