POJ1611 The Suspects ACM解题报告(并查集水题)

这题就是典型的并查集啦,就是0号同学是非典携带者,然后和他一组的同学就都是,如果一组里有一个携带者,那么一组都被认为有携带者。
#include
#include
#include
using namespace std;
int pre[30005];
int Find(int x)
{
    int r=x;
    while(pre[r]!=r) r=pre[r];
    int i=x,j;
    while(pre[i]!=r)
    {
        j=pre[i];
        pre[i]=r;
        i=j;
    }
    return r;
}
void mix(int x,int y)
{
    int fx=Find(x);
    int fy=Find(y);
    if(fy!=fx)
    {
        if(fy==0) pre[fx]=fy;
        else pre[fy]=fx;
    }
}
int main()
{
    int n,m,k,a,b;
    while(scanf("%d%d",&n,&m))
    {

        if(n==0&&m==0) break;
        for(int i=0;i

你可能感兴趣的:(acm,poj)