102872024-03-30 00:05:10111Pletykálkodáscpp17Wrong answer 25/1001.6s5356 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;
	if(N>1500)exit(1);
	vector<vector<int>>g(N+1);
	vector<pair<int,int>>e;
	for(int i=0;i<M;i++){
		int a,b;
		cin>>a>>b;
		g[a].push_back(b);
		g[b].push_back(a);
		e.emplace_back(a,b);
	}
	vector<pair<int,int>>ans(N*2);
	for(auto[a,b]:e){
		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;
		int aaa=-1,bbb=-1;
		for(int aa:g[a]){
			for(int bb:g[b]){
				int ok=0;
				for(int i:g[aa]){
					if(i==bb){
						ok=1;
					}
				}
				if(ok){
					aaa=aa;
					bbb=bb;
				}
			}
		}
		if(aaa!=-1){
			v[aaa]=0;
			v[bbb]=1;
			dfs(dfs,aaa);
			dfs(dfs,bbb);
			if(count(v.begin(),v.end(),-1)>1){
				continue;
			}
			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,aaa);
			s.emplace_back(b,bbb);
			s.emplace_back(a,b);
			s.emplace_back(aaa,bbb);
			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);
			}
			vector<bitset<1001>>v(N+1);
			for(int i=1;i<=N;i++)v[i][i]=1;
			for(auto[a,b]:s){
				v[a]=v[b]=v[a]|v[b];
			}
			int k=1;
			while(k<=N&&v[k].count()==N)k++;
			if(k<=N){
				// exit(1);
			}
			else if(s.size()<ans.size()){
				ans=s;
			}
		}
		fill(v.begin(),v.end(),-1);
		w[0].clear();
		w[1].clear();
		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);
		}
		if(s.size()<ans.size()){
			ans=s;
		}
	}
	cout<<ans.size()<<'\n';
	for(auto[a,b]:ans){
		cout<<a<<' '<<b<<'\n';
	}
	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1828 KiB
2Accepted3ms2056 KiB
3Accepted560ms2836 KiB
subtask20/9
4Accepted3ms2380 KiB
5Accepted3ms2540 KiB
6Wrong answer3ms2668 KiB
subtask30/13
7Runtime error2ms2692 KiB
8Runtime error2ms2688 KiB
9Runtime error2ms2788 KiB
subtask40/16
10Time limit exceeded1.552s3148 KiB
11Time limit exceeded1.569s3248 KiB
12Time limit exceeded1.577s3116 KiB
subtask525/25
13Accepted8ms3340 KiB
14Accepted8ms3396 KiB
15Accepted8ms3552 KiB
16Accepted9ms3620 KiB
17Accepted8ms3400 KiB
18Accepted7ms3784 KiB
19Accepted6ms3876 KiB
subtask60/13
20Wrong answer626ms4896 KiB
21Wrong answer640ms4884 KiB
22Wrong answer640ms4816 KiB
23Time limit exceeded1.6s4224 KiB
24Time limit exceeded1.578s4244 KiB
25Accepted1.074s5292 KiB
26Wrong answer1.055s5356 KiB
subtask70/24
27Runtime error3ms4452 KiB
28Runtime error3ms4592 KiB
29Runtime error3ms4676 KiB
30Runtime error3ms4808 KiB
31Runtime error3ms4820 KiB
32Runtime error2ms4816 KiB
33Runtime error2ms4912 KiB
34Runtime error2ms4916 KiB
35Runtime error3ms5120 KiB
36Runtime error3ms5208 KiB
37Runtime error3ms5220 KiB