hihocoder 1066 无间道(基础并查集)

来源:互联网 发布:淘宝助理上传宝贝显示0 编辑:程序博客网 时间:2024/05/22 09:56

基础并查集题目,拿来当做并查集上手不错

#include<cstdio>#include<iostream>#include<string>#include<map>using namespace std;int parent[100002];void init(){    for(int i=1;i<=100001;i++)    {        parent[i]=i;    }}int find(int x){    if(x==parent[x])        return x;    else    {        return parent[x]=find(parent[x]);    }}void join(int x,int y){    int fx=find(x), fy=find(y);    if(fx == fy)        return;    parent[fx]=fy;}bool query(int x,int y){    return find(x)==find(y);}int main(){    int op,op_i;    init();    string n1,n2;    map<string,int>M;    int id=0;    scanf("%d",&op);    while(op--)    {        scanf("%d",&op_i);        cin>>n1;        if(!M.count(n1))            M[n1]=id++;        cin>>n2;        if(!M.count(n2))            M[n2]=id++;        if(op_i==0)        {            join(M[n1],M[n2]);        }        else if(op_i==1)        {            if(query(M[n1],M[n2]))                printf("yes\n");            else                printf("no\n");        }    }    return 0;}
0 0
原创粉丝点击