题解:P17484 月兔通信网络
题意
给你一个无向图,最多添加
思路
分两种情况讨论。
原图缺
情况一:
原图缺的边比较少,
情况二:
缺至少
代码
int T,n,m,f[M];
vector<int> mp[M];
set<pair<int,int>> e;
vector<pair<int,int>> ans;
signed main()
{
T=rd();
while(T--){
n=rd(),m=rd();
rep(i,1,n) f[i]=0,mp[i].clear();
e.clear();
ans.clear();
rep(i,1,m){
int u=rd(),v=rd();
if(u>v) swap(u,v);
mp[u].push_back(v);
mp[v].push_back(u);
e.insert({u,v});
}
if(n*(n-1)/2-m<n){
rep(i,1,n) rep(j,i+1,n)
if(!e.count({i,j})) ans.push_back({i,j});
}
else{
for(int v:mp[1]) f[v]=1;
rep(i,2,n) if(!f[i]) ans.push_back({1,i});
}
printf("%lld\n",ans.size());
for(auto[u,v]:ans) printf("%lld %lld\n",u,v);
}
}