信友队T4 10pts 求调
  • 板块题目总版
  • 楼主GUO120822
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/11/23 13:53
  • 上次更新2024/11/23 16:05:34
查看原帖
信友队T4 10pts 求调
704562
GUO120822楼主2024/11/23 13:53
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int T,n,m,i,x,y,ans;
vector<int> G[N];
bool vis[N];
int p[N];
void dfs(int x)
{
	vis[x]=true;
	for (int to:G[x])
	{
		if (!vis[to]) dfs(to);
	}
}
void work()
{
	ans=0;
	scanf("%d%d",&n,&m);
    for (i=1;i<=n;i++) G[i].clear();
	for (i=1;i<=m;i++)
	{
		scanf("%d%d",&x,&y);
		G[x].push_back(y);
		G[y].push_back(x);
	}
	for (i=1;i<=n;i++) vis[i]=false;
	for (i=1;i<=n;i++)
	{
		if (!vis[i]) 
		{
			p[++ans]=i;
			dfs(i);
		}
	}
	printf("%d\n",ans-1);
    for (i=1;i<=ans-1;i++) printf("%d %d\n",p[i],p[i+1]);
}
int main()
{
	freopen("destiny.in","r",stdin);
	freopen("destiny.out","w",stdout); 
	scanf("%d",&T);
	while (T--) work();
	return 0;
}
2024/11/23 13:53
加载中...