update
This commit is contained in:
parent
5e77358d92
commit
1efcad447b
105
src/11/25/U86017.cpp
Normal file
105
src/11/25/U86017.cpp
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
#include <algorithm>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <functional>
|
||||||
|
#include <ios>
|
||||||
|
#include <iostream>
|
||||||
|
#include <map>
|
||||||
|
#include <ostream>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using ll = int64_t;
|
||||||
|
|
||||||
|
template<class T,class P>
|
||||||
|
ostream&operator<<(ostream&os,map<T,P>const&m){
|
||||||
|
os<<"map { ";
|
||||||
|
for(auto [k,v]:m){
|
||||||
|
os<<"{ "<<k<<", "<<v<<" }, ";
|
||||||
|
}
|
||||||
|
os<<"}";
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
template<class T,class P>
|
||||||
|
ostream&operator<<(ostream&os,pair<T,P>const&m){
|
||||||
|
os<<"pair { "<<m.first<<", "<<m.second<<" }";
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ll const maxn{ll(1e5+5)};
|
||||||
|
ll t,n,m,inf{ll(1)<<60};
|
||||||
|
ll q[maxn],qs{};
|
||||||
|
pair<ll, ll>e[maxn];
|
||||||
|
|
||||||
|
struct DSU{
|
||||||
|
ll f[maxn];
|
||||||
|
DSU(){for(ll i{1};i<=n;i++){f[i]=i;}}
|
||||||
|
ll find(ll const&n){if(f[n]==n)return n; return f[n]=find(f[n]);}
|
||||||
|
bool merge(ll const&a,ll const&b){if(find(a)==find(b))return false;f[find(a)]=find(b);return true;}
|
||||||
|
friend ostream&operator<<(ostream&os,DSU const& d){
|
||||||
|
os<<"DSU { ";
|
||||||
|
for(ll i{1};i<=n;i++)os<<d.f[i]<<", ";
|
||||||
|
os<<"}";
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
char dmem[sizeof(DSU)+1024];
|
||||||
|
DSU &dsu = *(DSU*)dmem;
|
||||||
|
ll un[maxn];
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
|
||||||
|
|
||||||
|
cin>>t;
|
||||||
|
while(t--){
|
||||||
|
cin>>n>>m;
|
||||||
|
// cout<<n<<" "<<m<<'\n';
|
||||||
|
for(ll i{1};i<=m;i++){
|
||||||
|
ll u,v;
|
||||||
|
cin>>u>>v;
|
||||||
|
if(u>v)swap(u,v);
|
||||||
|
// cout<<"uv "<<u<<' '<<v<<'\n';
|
||||||
|
e[i].first=u,e[i].second=v;
|
||||||
|
}
|
||||||
|
sort(e+1,e+1+m,greater());
|
||||||
|
new(dmem) DSU();
|
||||||
|
// cout<<dsu<<'\n';
|
||||||
|
ll uns{};
|
||||||
|
for(ll i{1};i<=m;i++){
|
||||||
|
// cout<<e[i]<<'\n';
|
||||||
|
if(!dsu.merge(e[i].first, e[i].second)){
|
||||||
|
un[++uns]=i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// cout<<dsu<<'\n';
|
||||||
|
map<ll, ll> mm;
|
||||||
|
for(ll i{1};i<=n;i++){
|
||||||
|
mm[dsu.find(i)] = min(mm[dsu.find(i)]==0?inf:mm[dsu.find(i)],i);
|
||||||
|
}
|
||||||
|
// cout<<mm<<' '<<uns<<' '<<un[uns]<<' '<<e[un[uns]]<<'\n';
|
||||||
|
// cout<<mm.size()<<' '<<uns<<'\n';
|
||||||
|
if((ll)mm.size()-1>uns&&mm.size()!=1){
|
||||||
|
cout<<"-1"<<'\n';
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(mm.size()==1){
|
||||||
|
cout<<"0\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
qs=0;
|
||||||
|
for(auto const[k,v]:mm){
|
||||||
|
q[++qs]=v;
|
||||||
|
}
|
||||||
|
sort(q+1,q+1+qs);
|
||||||
|
// cout<<mm<<'\n';
|
||||||
|
// for(ll i{1};i<=qs;i++)cout<<q[i]<<" ,";
|
||||||
|
// cout<<'\n';
|
||||||
|
// cout<<mm<<'\n';
|
||||||
|
cout<<mm.size()-1<<'\n';
|
||||||
|
for(ll i{2};i<=qs;i++){
|
||||||
|
cout<<e[un[uns]].first<<" "<<e[un[uns-1]].second<<" "<<q[1]<<" "<<q[i]<<'\n';
|
||||||
|
--uns;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
src/11/25/rebuild/rebuild1.ans
Normal file
3
src/11/25/rebuild/rebuild1.ans
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
1
|
||||||
|
2 5 1 2
|
||||||
|
0
|
9
src/11/25/rebuild/rebuild1.in
Normal file
9
src/11/25/rebuild/rebuild1.in
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
2
|
||||||
|
5 5
|
||||||
|
1 3
|
||||||
|
3 4
|
||||||
|
5 2
|
||||||
|
5 2
|
||||||
|
2 5
|
||||||
|
2 1
|
||||||
|
1 2
|
5
src/11/25/rebuild/rebuild2.ans
Normal file
5
src/11/25/rebuild/rebuild2.ans
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
0
|
||||||
|
-1
|
||||||
|
2
|
||||||
|
1 2 1 5
|
||||||
|
1 3 1 6
|
19
src/11/25/rebuild/rebuild2.in
Normal file
19
src/11/25/rebuild/rebuild2.in
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
3
|
||||||
|
5 4
|
||||||
|
1 3
|
||||||
|
3 4
|
||||||
|
5 2
|
||||||
|
1 2
|
||||||
|
5 3
|
||||||
|
1 3
|
||||||
|
3 4
|
||||||
|
5 2
|
||||||
|
7 8
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 1
|
||||||
|
1 4
|
||||||
|
2 4
|
||||||
|
4 3
|
||||||
|
6 7
|
||||||
|
7 6
|
16
src/11/25/rebuild/rebuild3.ans
Normal file
16
src/11/25/rebuild/rebuild3.ans
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
2
|
||||||
|
1 2 1 7
|
||||||
|
1 5 1 8
|
||||||
|
1
|
||||||
|
3 7 1 2
|
||||||
|
4
|
||||||
|
1 5 1 2
|
||||||
|
1 6 1 3
|
||||||
|
1 6 1 4
|
||||||
|
1 7 1 8
|
||||||
|
3
|
||||||
|
1 4 1 6
|
||||||
|
1 9 1 7
|
||||||
|
1 9 1 10
|
||||||
|
1
|
||||||
|
3 9 1 10
|
56
src/11/25/rebuild/rebuild3.in
Normal file
56
src/11/25/rebuild/rebuild3.in
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
5
|
||||||
|
10 10
|
||||||
|
1 10
|
||||||
|
2 1
|
||||||
|
2 5
|
||||||
|
1 6
|
||||||
|
9 1
|
||||||
|
5 9
|
||||||
|
1 6
|
||||||
|
1 4
|
||||||
|
1 5
|
||||||
|
1 3
|
||||||
|
10 10
|
||||||
|
3 9
|
||||||
|
3 7
|
||||||
|
5 10
|
||||||
|
8 6
|
||||||
|
6 1
|
||||||
|
4 10
|
||||||
|
7 9
|
||||||
|
9 1
|
||||||
|
3 5
|
||||||
|
3 9
|
||||||
|
10 10
|
||||||
|
1 7
|
||||||
|
1 6
|
||||||
|
3 10
|
||||||
|
9 1
|
||||||
|
1 5
|
||||||
|
1 5
|
||||||
|
6 7
|
||||||
|
1 6
|
||||||
|
1 7
|
||||||
|
9 1
|
||||||
|
10 10
|
||||||
|
9 2
|
||||||
|
3 5
|
||||||
|
5 8
|
||||||
|
1 4
|
||||||
|
9 1
|
||||||
|
9 1
|
||||||
|
1 9
|
||||||
|
1 4
|
||||||
|
9 1
|
||||||
|
1 5
|
||||||
|
10 10
|
||||||
|
8 1
|
||||||
|
3 1
|
||||||
|
9 3
|
||||||
|
2 4
|
||||||
|
7 3
|
||||||
|
3 9
|
||||||
|
9 3
|
||||||
|
2 3
|
||||||
|
5 3
|
||||||
|
6 5
|
60710
src/11/25/rebuild/rebuild4.ans
Normal file
60710
src/11/25/rebuild/rebuild4.ans
Normal file
File diff suppressed because it is too large
Load Diff
552692
src/11/25/rebuild/rebuild4.in
Normal file
552692
src/11/25/rebuild/rebuild4.in
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user