102882024-03-30 00:06:04111Pletykálkodáscpp17Wrong answer 25/1001.6s6068 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<1501>>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
1Accepted3ms1832 KiB
2Accepted3ms2020 KiB
3Accepted679ms3080 KiB
subtask20/9
4Accepted3ms2440 KiB
5Accepted3ms2652 KiB
6Wrong answer3ms2888 KiB
subtask30/13
7Runtime error3ms3080 KiB
8Runtime error3ms3424 KiB
9Runtime error3ms3440 KiB
subtask40/16
10Time limit exceeded1.6s3728 KiB
11Time limit exceeded1.557s4020 KiB
12Time limit exceeded1.575s4036 KiB
subtask525/25
13Accepted8ms3820 KiB
14Accepted8ms3820 KiB
15Accepted8ms3876 KiB
16Accepted12ms3820 KiB
17Accepted9ms3820 KiB
18Accepted8ms3868 KiB
19Accepted6ms4072 KiB
subtask60/13
20Accepted992ms5516 KiB
21Wrong answer1.019s5708 KiB
22Wrong answer1.021s5972 KiB
23Time limit exceeded1.569s4944 KiB
24Time limit exceeded1.57s4660 KiB
25Accepted1.327s6068 KiB
26Time limit exceeded1.565s6000 KiB
subtask70/24
27Runtime error3ms4792 KiB
28Runtime error3ms4820 KiB
29Runtime error3ms4876 KiB
30Runtime error3ms4980 KiB
31Runtime error3ms4928 KiB
32Runtime error3ms5000 KiB
33Runtime error3ms5004 KiB
34Runtime error3ms5000 KiB
35Runtime error3ms4996 KiB
36Runtime error3ms5232 KiB
37Runtime error2ms5216 KiB