求正解

P2839 [国家集训队] middle

沧桑の天骄 @ 2017-07-30 21:36:40

#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
int f[10001] ;
char o[200001];
int find(int x)
{
    if(f[x]!=x)
      return find(f[x]);
    else
      return x;
}
void tty(int w,int c)
{
    f[c]=w;
}
int main()
{
    int x,y,n,m,e=0;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
      f[i]=i;
    for(int i=1;i<=m;i++)
    {
        cin>>x>>y;
        int w=find(x);
        int c=find(y);
        if(w!=c)
        {
          tty(w,c);  
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            if(find(i)!=find(j))
            {
              e++;
              f[j]=find(i);
            }
        }
    }
    cout<<e<<endl;
    return 0;
}
//我哪错了

|