Home
Problem
Status
Contest
User
Group
Forum
Article
Register
Login
{"likeCnt":1,"createTime":"Jan 26, 2018 5:09:15 PM","author":"201730210321","viewCnt":886,"id":324,"title":"并查集","trustable":false,"dislikeCnt":0,"content":"```\n#include\u003cstdio.h\u003e\n#include\u003ciostream\u003e\nusing namespace std;\nint fa[1111];\nint fi(int a){\n if(fa[a]!\u003da)fa[a]\u003dfi(fa[a]);\n return fa[a];\n}\nvoid un(int u,int v){\n int f1,f2;\n f1\u003dfi(u);f2\u003dfi(v);\n if(f1!\u003df2)fa[f2]\u003df1;\n}\nint main()\n{\n int n,m; \n while(cin\u003e\u003en){\n if(n\u003d\u003d0)break;\n cin\u003e\u003em;\n for(int i\u003d1;i\u003c\u003dn;i++)fa[i]\u003di;\n while(m--){\n int u,v;\n scanf(\"%d%d\",\u0026u,\u0026v);\n un(u,v);\n }\n int num\u003d0;\n for(int i\u003d1;i\u003c\u003dn;i++){\n if(fi(i)\u003d\u003di)num++;\n }\n printf(\"%d\\n\",num-1);\n \n }\n return 0;\n}\n```"}