CodeForces 755CPolandBall and Forest

来源:互联网 发布:java borderlayout 编辑:程序博客网 时间:2024/06/06 00:18

题意:

给出第I点到第p i点是最远的,询问有多少个区域。

思路

简单并查集一遍成!


#include <iostream>#include <stdio.h>#include <cstring>using namespace std;#define maxn 100005int father[maxn];int find(int x){    if(father[x]!=x)        father[x]=find(father[x]);    return father[x];}void Union(int x,int y){    int root1=find(x);    int root2=find(y);    if(root1!=root2)    {        father[root1]=root2;    }    return ;}int main(){    int n;    cin>>n;    for(int i=1;i<=n;i++)    {        father[i]=i;    }    for(int i=1;i<=n;i++)    {        int t;        cin>>t;        Union(t,i);    }    int ans=0;    for(int i=1;i<=n;i++)    {        if(father[i]==i)        {            ans++;        }    }    cout<<ans<<endl;}


0 0
原创粉丝点击