社区讨论

为什么内存这么大...

P1536村村通参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mi6nm8ru
此快照首次捕获于
2025/11/20 07:49
4 个月前
此快照最后确认于
2025/11/20 07:49
4 个月前
查看原帖
3728ms / 557.19MB
CPP
#include<iostream>
#include<stdio.h>

using namespace std;
int m,n,a,b,i,sum;
bool o[10000],s[10000];
int f[10000];
int find_(int a)
{
   if (f[a]==0) return a; else return find_(f[a]);  
}
int main()
{
   m=-1; 
   while (m!=0)
   {
   	sum=0;
   	scanf("%d",&m); 
   	if (m==0) return 0; 
   	scanf("%d",&n);
   	for (i=0; i<=10000; i++) 
   	{
   		f[i]=0; o[i]=0; s[i]=0;
   	}
   	for (i=1; i<=n; i++)
   	{
   		scanf("%d%d",&a,&b);
   		o[a]=true; 
   		o[b]=true;
   		f[b]=find_(a);
   	}
   	for (i=1; i<=m; i++)
   	{
   		if (o[i]==false) sum++;
   	}
   	for (i=1; i<=m; i++) 
   	{
   		if (s[f[i]]==false) sum++;
   		s[f[i]]=true; 
   	}
   	printf("%d\n",sum-2); 
   }
   return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...