102862024-03-30 00:03:59111Pletykálkodáscpp17Hibás válasz 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Elfogadva3ms2064 KiB
3Elfogadva564ms3084 KiB
subtask20/9
4Elfogadva3ms2316 KiB
5Elfogadva3ms2444 KiB
6Hibás válasz3ms2672 KiB
subtask30/13
7Futási hiba3ms2884 KiB
8Futási hiba3ms2972 KiB
9Futási hiba3ms3196 KiB
subtask40/16
10Időlimit túllépés1.565s3404 KiB
11Időlimit túllépés1.565s3604 KiB
12Időlimit túllépés1.557s3636 KiB
subtask525/25
13Elfogadva8ms3816 KiB
14Elfogadva8ms3984 KiB
15Elfogadva8ms3944 KiB
16Elfogadva10ms3944 KiB
17Elfogadva8ms3936 KiB
18Elfogadva7ms3940 KiB
19Elfogadva6ms4088 KiB
subtask60/13
20Futási hiba4ms5080 KiB
21Futási hiba7ms4976 KiB
22Futási hiba4ms4984 KiB
23Futási hiba6ms5756 KiB
24Futási hiba4ms5488 KiB
25Futási hiba4ms5300 KiB
26Futási hiba4ms5300 KiB
subtask70/24
27Futási hiba2ms4240 KiB
28Futási hiba2ms4244 KiB
29Futási hiba3ms4344 KiB
30Futási hiba3ms4212 KiB
31Futási hiba3ms4124 KiB
32Futási hiba3ms4224 KiB
33Futási hiba3ms4220 KiB
34Futási hiba2ms4220 KiB
35Futási hiba2ms4228 KiB
36Futási hiba2ms4328 KiB
37Futási hiba3ms4452 KiB