实在找不到错哪里了,反正就是样例全对,测试点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;
}