WA求肋
查看原帖
WA求肋
1095195
aliah楼主2024/5/15 12:27

实在找不到错哪里了,反正就是样例全对,测试点WA

#include <bits/stdc++.h>
#include<map>
using namespace std;
int main()
{
	int n,m,i,j;
	long long ans=0,x,y,z,w;
	cin>>n>>m;
	int a[n+1];
	for(i=0;i<=n;i++)
		a[i]=i;
	for(i=0;i<m;i++)
	{
		scanf("%d%d",&x,&y);
		z=x;
		while(x!=a[x])
			x=a[x];
		while(y!=a[y])
			y=a[y];
		a[x]=y;
		a[z]=y;
	}
	map<int,int> b;
	map<int,int>::iterator p;
	for(i=1;i<=n;i++)
	{
		for(x=i;x!=a[x];x=a[x]);
		b[x]++;
	}
	for(p=b.begin();p!=b.end();p++)
		ans+=p->second*(p->second-1)/2;
	cout<<ans-m;
	return 0;
}
2024/5/15 12:27
加载中...