请求 Hack
  • 板块P1536 村村通
  • 楼主Drifty
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/24 09:05
  • 上次更新2024/3/24 10:40:26
查看原帖
请求 Hack
729358
Drifty楼主2024/3/24 09:05
#include<bits/stdc++.h>
using namespace std;
vector<int>g[1005];
int n=1,m=1,vis[1005];
void dfs(int u)
{
	if(vis[u])return ;
	vis[u]=1;
	for(int v:g[u])dfs(v);
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL),cout.tie(NULL);
	while(cin)
	{
		memset(vis,0,sizeof(vis));
		cin>>n;
		for(int i=0;i<=n;i++)g[i].clear();
		if(!n)break;
		cin>>m;
		for(int i=1;i<=m;i++)
		{
			int x,y;
			cin>>x>>y;
			g[x].push_back(y);
			g[y].push_back(x);
		}
		int ans=-1;
		for(int i=1;i<=n;i++)
		{
			if(!vis[i])dfs(i),ans++;
		}
		cout<<ans<<'\n';
	}
}

这个以连通块遍历为基础的代码能过

但是个人认为其可能错误且不能为正解

在此求 Hack

2024/3/24 09:05
加载中...