Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

不知为啥错了,代码如下,求大牛指点迷津~~

Posted by dieyidezui at 2012-08-03 17:24:17 on Problem 1611
#include<iostream>
using namespace std;

int set[30003];

void init_set(int n)
{
    for(int i=0;i<=n;i++)
        set[i]=i;
}
int find(int x)
{
    int r=x;
    while(set[r]!=r)
        r=set[r];
    int i=x;
    while(i!=r)
    {
        int j=set[i];
        set[i]=r;
        i=j;
    }
    return r;
}

void merge(int a,int b)
{
    int fa=find(a);
    int fb=find(b);
    if(fb<fa)
        set[fa]=fb;
    else if(fa<fb)
        set[fb]=fa;
}

void inputMerge()
{
    int k;
    cin>>k;
    int a,b;
    cin>>a;
    k--;;
    while(k--)
    {
      cin>>b;
      merge(a,b);
    }
}

int find0(int n)
{
    int sum=0;
    for(int i=0;i<=n;i++)
        if(set[i]==0)
            sum++;
    return sum;
}
int main()
{
    int n,m;
    while(cin>>n>>m,n||m)
    {
        init_set(n);
        while(m--)
            inputMerge();
        cout<<find0(n)<<endl;
    }
    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator