102862024-03-30 00:03:59111Pletykálkodáscpp17Wrong answer 25/1001.565s5756 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);
			}
			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
2Accepted3ms2064 KiB
3Accepted564ms3084 KiB
subtask20/9
4Accepted3ms2316 KiB
5Accepted3ms2444 KiB
6Wrong answer3ms2672 KiB
subtask30/13
7Runtime error3ms2884 KiB
8Runtime error3ms2972 KiB
9Runtime error3ms3196 KiB
subtask40/16
10Time limit exceeded1.565s3404 KiB
11Time limit exceeded1.565s3604 KiB
12Time limit exceeded1.557s3636 KiB
subtask525/25
13Accepted8ms3816 KiB
14Accepted8ms3984 KiB
15Accepted8ms3944 KiB
16Accepted10ms3944 KiB
17Accepted8ms3936 KiB
18Accepted7ms3940 KiB
19Accepted6ms4088 KiB
subtask60/13
20Runtime error4ms5080 KiB
21Runtime error7ms4976 KiB
22Runtime error4ms4984 KiB
23Runtime error6ms5756 KiB
24Runtime error4ms5488 KiB
25Runtime error4ms5300 KiB
26Runtime error4ms5300 KiB
subtask70/24
27Runtime error2ms4240 KiB
28Runtime error2ms4244 KiB
29Runtime error3ms4344 KiB
30Runtime error3ms4212 KiB
31Runtime error3ms4124 KiB
32Runtime error3ms4224 KiB
33Runtime error3ms4220 KiB
34Runtime error2ms4220 KiB
35Runtime error2ms4228 KiB
36Runtime error2ms4328 KiB
37Runtime error3ms4452 KiB