ACM常用模板——数据结构——并查集

原创 2015年11月17日 15:44:35
利用并查集来判断无向图的环
模型:给出有向边,判断组合后是否是树
#include<iostream>
using namespace std;
const int maxn=1005;
int fa[maxn],in[maxn],out[maxn],vis[maxn];
int Find(int x)
{
if(fa[x]==x) return x;
return fa[x]=Find(fa[x]);
}
void Merge(int x,int y)
{
x=Find(x);
y=Find(y);
if(x!=y) fa[y]=x;
}
int main()
{
int x,y,Case=1;
cin.sync_with_stdio(false);
while(cin>>x>>y&&x+y>=0)
{
int Max=-1;
if(x+y==0)
{
cout<<"Case "<<Case++<<" is a tree."<<endl;
continue;
}
for(int i=0;i<maxn;i++) fa[i]=i,in[i]=0,out[i]=0,vis[i]=0;
Merge(x,y);
in[y]++;
out[x]++;
vis[x]=1;
vis[y]=1;
Max=max(Max,max(x,y));
while(cin>>x>>y,x+y)
{
Merge(x,y);
in[y]++;
out[x]++;
vis[x]=1;
vis[y]=1;
Max=max(Max,max(x,y));
}
int cnt=0;
for(int i=0;i<=Max;i++)
if(vis[i]&&fa[i]==i) cnt++;
if(cnt!=1)
{
cout<<"Case "<<Case++<<" is not a tree."<<endl;
continue;
}
int cnt1=0,cnt2=0;
for(int i=0;i<=Max;i++)
if(vis[i]&&in[i]==0) cnt1++;
else if(vis[i]&&in[i]>1) cnt2++;
if(cnt1!=1||cnt2>0)
{
cout<<"Case "<<Case++<<" is not a tree."<<endl;
continue;
}
cout<<"Case "<<Case++<<" is a tree."<<endl;
}
return 0;
}

ACM常用数据结构小结与实现

应当说这段时间学习了很多的数据结构,也到了一个总结的时候。fotile96的这篇Blog非常值得推荐,我达不到这个高度,只能给自己和队友做些简单的归纳。   树状数组   非常简单的数据结构,...
  • mengxingyuanlove
  • mengxingyuanlove
  • 2015年06月09日 21:02
  • 3164

ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)

萌新常用的都在这了,本萌新的模板集。
  • qq_32265245
  • qq_32265245
  • 2016年11月05日 18:00
  • 8634

ACM 算法模板

ACM 代码模板一、字符串类1、manacher算法///$#x#x#x#x#x#x# void manacher(string& s, int *R, int n) { int p = 0,...
  • zichenzhiguang
  • zichenzhiguang
  • 2016年08月19日 21:03
  • 601

STL模板库在ACM中的应用(I)

一ACM和STL简介   1.ACM全称世界大学生程序设计竞赛 主办方是美国计算机协会(acm)  。参赛选手需在给定时间内自行设计编写算法来完成给定的题目。具体介绍请点连接:ACM      2.S...
  • xcc_xing99
  • xcc_xing99
  • 2016年01月30日 21:24
  • 959

最全ACM常用STL

STL 中专门用于排列的函数(可以处理存在重复数据集的排列问题) 头文件:#include using namespace std; 调用: next_permutation(start, e...
  • dreamzuora
  • dreamzuora
  • 2016年12月07日 20:38
  • 677

ACM中java的使用

这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目。 1. 输入: 格式为:Scanner ...
  • samjustin1
  • samjustin1
  • 2016年08月01日 16:59
  • 1502

ACM在线模版-f-zyj

试图打造最为完善最为工整的ACM竞赛模版!!!By-f-zyj 在线速查!赛前整理打印,为比赛做足准备-_-#...
  • f_zyj
  • f_zyj
  • 2016年06月06日 13:26
  • 65543

ACM 头文件大全 常用函数

ACM   头文件大全    常用函数 #include//设定插入点 #include //字符处理 #include//定义错误码 #include //浮点数处理 #in...
  • LiuJiuXiaoShiTou
  • LiuJiuXiaoShiTou
  • 2017年04月09日 21:45
  • 668

Latex模板样例(1)

% -*- coding: utf-8 -*- %% %% 本模板可以使用以下两种方式编译: %% 1. PDFLaTeX %% 2. XeLaTeX [推荐] %% 注意: %%...
  • CTTACM
  • CTTACM
  • 2015年07月23日 11:09
  • 1389

java模板 Java做acm所需要的基础知识之基本输入输出问题

来源: Java做acm所需要的基础知识之基本输入输出问题 1、基本定义 import java.util.*; import java.io.*; public class Main  {...
  • nickwong_
  • nickwong_
  • 2015年08月27日 20:54
  • 916
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ACM常用模板——数据结构——并查集
举报原因:
原因补充:

(最多只允许输入30个字)