数据结构与算法题目集(中文) - 7-25 朋友圈(25 分)

题目链接:点击打开链接

 

题目大意:略。

 

解题思路:入门级并查集。

 

AC 代码

#include
#include

#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f

using namespace std;

typedef long long ll;

int pre[30000+10], vis[30000+10];

void init()
{
    for(int i=1;i<30000+10;i++) pre[i]=i;
    mem(vis,0);
}

int find(int x)
{
    int r=x;
    while( pre[r]!= r )
         r=pre[r];

    int i=x, j;
    while( i != r )
    {
         j = pre[i];
         pre[i] = r ;
         i = j;
    }
    return r ;
}

void join(int x,int y)
{
    int fx=find(x),fy=find(y);
    pre[fy]=fx;
}

int main()
{
    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        init();
        int tn,a[n+10];
        while(m--)
        {
            scanf("%d",&tn);
            for(int i=0;i

 

你可能感兴趣的:(#,ACM,#,PTA,#,并查集)