102882024-03-30 00:06:04111Pletykálkodáscpp17Hibás válasz 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1832 KiB
2Elfogadva3ms2020 KiB
3Elfogadva679ms3080 KiB
subtask20/9
4Elfogadva3ms2440 KiB
5Elfogadva3ms2652 KiB
6Hibás válasz3ms2888 KiB
subtask30/13
7Futási hiba3ms3080 KiB
8Futási hiba3ms3424 KiB
9Futási hiba3ms3440 KiB
subtask40/16
10Időlimit túllépés1.6s3728 KiB
11Időlimit túllépés1.557s4020 KiB
12Időlimit túllépés1.575s4036 KiB
subtask525/25
13Elfogadva8ms3820 KiB
14Elfogadva8ms3820 KiB
15Elfogadva8ms3876 KiB
16Elfogadva12ms3820 KiB
17Elfogadva9ms3820 KiB
18Elfogadva8ms3868 KiB
19Elfogadva6ms4072 KiB
subtask60/13
20Elfogadva992ms5516 KiB
21Hibás válasz1.019s5708 KiB
22Hibás válasz1.021s5972 KiB
23Időlimit túllépés1.569s4944 KiB
24Időlimit túllépés1.57s4660 KiB
25Elfogadva1.327s6068 KiB
26Időlimit túllépés1.565s6000 KiB
subtask70/24
27Futási hiba3ms4792 KiB
28Futási hiba3ms4820 KiB
29Futási hiba3ms4876 KiB
30Futási hiba3ms4980 KiB
31Futási hiba3ms4928 KiB
32Futási hiba3ms5000 KiB
33Futási hiba3ms5004 KiB
34Futási hiba3ms5000 KiB
35Futási hiba3ms4996 KiB
36Futási hiba3ms5232 KiB
37Futási hiba2ms5216 KiB