tyvj-1017 并查集

来源:互联网 发布:ie8中文版官方mac 编辑:程序博客网 时间:2024/06/05 02:35

裸并查集。

#include<stdio.h>#include<stdlib.h>#include<string.h>#define SIZE 1111#define FILE_INPUTint set[SIZE];int init(int size){int i;for(i=0;i<=size;i++)set[i]=-1;return 0;}int find(int e){int node=e,root;while(set[node]>0)node=set[node];root=node;node=e;while(set[e]>0){node=set[e];set[e]=root;e=node;}return root;}int merge(int e1, int e2){int r1=find(e1);int r2=find(e2);if(r1==r2) return 0;if(set[r1]<set[r2])set[r2]=r1;else if(set[r2]<set[r1])set[r1]=r2;elseset[r1]=r2,set[r2]--;return 1;}int main(void){int n,m,cnt=0,t1,t2;#ifdef FILE_INPUTfreopen("in","r",stdin);#endifscanf("%d%d",&n,&m);init(m);while(n-->0){scanf("%d%d",&t1,&t2);if(!merge(t1,t2))cnt++;}printf("%d\n",cnt);return 0;}


 

原创粉丝点击