POJ1308
1、题目链接地址
http://poj.org/problem?id=1308
2、源代码
#include<iostream>
using namespace std;
#define MAXN 100
int set[MAXN]; //set[]记录每个节点的父节点 int FindSet(int x) //寻找x所在根的根节点
{
if(set[x]==x)
return x;
if(set[x]==-x)
return -x;
else
set[x]=FindSet(set[x]);
return set[x];
}
int main()
{
int pointa,pointb,FSa,FSb;
int cas=,num=,I;
bool judge=,flag=;//judge为是否判断完,flag为是否有边输入
for(I=;I<MAXN;I++)
set[I]=-I;
while(cin>>pointa>>pointb,pointa>=)
{
if(pointa==)
{
if(num==||flag==)
cout<<"Case "<<cas<<" is a tree.\n";
else
cout<<"Case "<<cas<<" is not a tree.\n";
cas++;
flag=;
num=;
judge=;
for(I=;I<MAXN;I++)
set[I]=-I;
}
else
{
flag=; //有边
FSa=FindSet(pointa);
if(FSa==-pointa)
set[pointa]=pointa;
FSb=FindSet(pointb);
if(FSb==-pointb)
set[pointb]=pointb;
if(FSa==FSb)
{
num=;
judge=;
}
if(judge==)
{
if(FSb==pointb) //pontb是已出现过的根节点
{
if(FSa!=-pointa) //当pointa不是还没有出现过的点
{
num--;
}
set[pointb]=FindSet(pointa);
}
else
{
if(FSb==-pointb) //pointb还没有出现过
{
if(FSa==-pointa) //pointa还没有出现过
{
num++;
}
set[pointb]=FindSet(pointa);
}
else
{
num=;
judge=;
}
}
}
}
}
return ;
}
好久的东西,粗略整理一下。
POJ1308的更多相关文章
- poj1308 Is It A Tree?(并查集)详解
poj1308 http://poj.org/problem?id=1308 题目大意:输入若干组测试数据,输入 (-1 -1) 时输入结束.每组测试数据以输入(0 0)为结束标志.然后根据所给的 ...
- poj1308(简单并查集)
题目链接:http://poj.org/problem?id=1308 题意:x, y 表示x 与 y连接,给出一波这样的数据,问这组数据能否构成树,即不能形成回路,不能有多个根节点:要注意可以是空树 ...
- poj1308 并查集
比较恶心 1: 0 0 空树是一棵树 2: 1 1 0 0 不是树 3: 1 2 1 2 0 0 不是树... 4: 1 2 2 3 4 5 不是树 森林不算是树 5: 1 2 2 3 3 4 4 5 ...
- HDU1325 &&poj1308 基础并查集
和上一道小希的迷宫差点儿相同,可是在HDU上提交一直WA,POJ过了 HDU的数据太强了吧,强的我感觉数据有问题 题意:输入若干对点,推断是否是一颗树,转化过来也就是是否存在环 点数-边数=1,还要推 ...
- POJ1308 Is It A Tree?
题目大意:和HDU1272-小希的迷宫题目一样, 如果有一个通道连通了房间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任意两个房间有且仅有一条路径 ...
- poj1308(并查集)
题目链接:http://poj.org/problem;jsessionid=436A34AE4BE856FB2DF9B264DCA9AA4E?id=1308 题意:给定一些边让你判断是否构成数. 思 ...
- Is It A Tree?----poj1308
http://poj.org/problem?id=1308 #include<stdio.h> #include<string.h> #include<iostream ...
- (并查集)Is It A Tree? --POJ--1308
链接: http://poj.org/problem?id=1308 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82830#probl ...
- 并查集——poj1308(并查集延伸)
题目链接:Is It A Tree? 题意:给你一系列形如u v的点对(u v代表一条由u指向v的有向边),请问由给你的点构成的图是不是一棵树? 树的特征:①每个节点(除了根结点)只有一个入度:②只有 ...
随机推荐
- Android application testing with the Android test framework
目录(?)[-] Android automated testing 1 How to test Android applications Tip 2 Unit tests vs functional ...
- 从无到有开发自己的Wordpress博客主题---Wordpress主题的构造
在这篇教程中,主要是对Wordpress的主题的构造进行分析,以方便今后的开发工作. 本来打算就引用一下别人已经有的文档就好了,但还是想从头到尾捋一遍,也方便自己梳理学习. 1.Wordpress主题 ...
- mac root
我在mac下,用su登录root用户 但是提醒 su:Sorry 然后按照网上的方法弄了好多次,都没成功,说是要修改/etc/group 文件中,wheel后添加自己的用户名,用逗号分隔多个用户, ...
- 软件测试 Record
fxcopnunit软件质量 EDW 数据仓库ETL KPI 敏捷 测试计划 单元测试 集成测试 系统测试 对测试结果 阶段性 分析 总结 测试结果报告 环境问题:软硬件用户有问题,我们这边没有有效问 ...
- Raspberry Pi 配置
资料 教程 <树莓派使用指南> 系统盘制作 插上电源,连上HDML线,计科
- laravel 中将DB::select 得到的内容转为数组
$sql = "select count(*) as num from api_log where uid='{$this->uid}'"; $ ...
- Gatling:开源压力测试框架之入门
Gatling是一款开源的压力测试工具,基于Scala, Akka and Netty. 可录制测试脚本,也可以手动编写脚本,适合有编程经验的测试人员使用: 支持测试用例的参数化,可以使用csv.js ...
- kali视频(21-25)学习
第六周 kali视频(21-25)学习 21.密码攻击之在线攻击工具 22.密码攻击之离线攻击工具(一) 23.密码攻击之离线攻击工具(二) 24.密码攻击之哈希传递攻击 25.无线安全分析工具 21 ...
- jQuery使用prop设置checkbox全选、反选
$(function(){ var checkbox = $("input[type='checkbox']"); //全选 $('#select-all' ...
- Linux下搭建 NFS
一.NFS简介 NFS是Network File System的缩写,即网络文件系统.一种使用于分散式文件协定,有SUN公司开发.功能是通过网络让不同的机器.不同的操作系统能够分享个人数据,让应用程序 ...