102872024-03-30 00:05:10111Pletykálkodáscpp17Hibás válasz 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Elfogadva3ms2056 KiB
3Elfogadva560ms2836 KiB
subtask20/9
4Elfogadva3ms2380 KiB
5Elfogadva3ms2540 KiB
6Hibás válasz3ms2668 KiB
subtask30/13
7Futási hiba2ms2692 KiB
8Futási hiba2ms2688 KiB
9Futási hiba2ms2788 KiB
subtask40/16
10Időlimit túllépés1.552s3148 KiB
11Időlimit túllépés1.569s3248 KiB
12Időlimit túllépés1.577s3116 KiB
subtask525/25
13Elfogadva8ms3340 KiB
14Elfogadva8ms3396 KiB
15Elfogadva8ms3552 KiB
16Elfogadva9ms3620 KiB
17Elfogadva8ms3400 KiB
18Elfogadva7ms3784 KiB
19Elfogadva6ms3876 KiB
subtask60/13
20Hibás válasz626ms4896 KiB
21Hibás válasz640ms4884 KiB
22Hibás válasz640ms4816 KiB
23Időlimit túllépés1.6s4224 KiB
24Időlimit túllépés1.578s4244 KiB
25Elfogadva1.074s5292 KiB
26Hibás válasz1.055s5356 KiB
subtask70/24
27Futási hiba3ms4452 KiB
28Futási hiba3ms4592 KiB
29Futási hiba3ms4676 KiB
30Futási hiba3ms4808 KiB
31Futási hiba3ms4820 KiB
32Futási hiba2ms4816 KiB
33Futási hiba2ms4912 KiB
34Futási hiba2ms4916 KiB
35Futási hiba3ms5120 KiB
36Futási hiba3ms5208 KiB
37Futási hiba3ms5220 KiB