poj 1308 Is It A Tree?

// 题意: 给出一些边,由所给出的边能否构成一棵树.(节点数<100)

// 思路: n个顶点的树具有3个特点:连通,不含环,恰好包含n-1条边.只要有任意两个,就能推导出第3个
// 所以我们可以通过是否连通和不含环来判断可以构成树.
// 不含环: 通过并查集,如果边a->b, a和b的祖先结点都一样,则是有环,包括a->a,和 a->b 重复出现,
// 连通: 只有一个根结点

#include <iostream> //并查集
using namespace std;
#define maxn 1000
int p[maxn],isNode[maxn];
int find(int x)
{
return p[x]==x ? x : p[x]=find(p[x]);
}
int main()
{
int t=1,a,b;
while(cin>>a>>b&&a!=-1) // a->b
{
if(a==0) //只有 0 0 ,空树也是一棵树
{
printf("Case %d is a tree.\n",t++);
continue;
}
for(int i=1;i<maxn;++i)
{
p[i]=i;
isNode[i]=0;
}
int isTree=1,tail=0;
while(a!=0)
{
if(isTree)
{
int x=find(a),y=find(b);
if(x==y) //说明存在环
{
isTree=0;
}
else
{
p[y]=x; //a->b
isNode[a]=isNode[b]=1; //标志结点
tail=max(tail,max(a,b)); //结点的下标并不是顺序增加 1
}
}
cin>>a>>b;
}
if(!isTree)
printf("Case %d is not a tree.\n",t++);
else
{
int roots=0;
for(int i=1;i<=tail;i++)
{
if(isNode[i]&&p[i]==i) //找到一根结点
{
roots++;
if(roots>1)
break;
}
}
if(roots==1)
printf("Case %d is a tree.\n",t++);
else
printf("Case %d is not a tree.\n",t++); //没有根结点,或者不只一个根结点
}
}
return 0;
}

转载于:https://www.cnblogs.com/mjc467621163/archive/2011/07/20/2112182.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle在group by时某列有多个值的拼接

最近编码过程中出现了group by后&#xff0c;某些列会有多个值&#xff0c;而我需要把这些多个值的列进行拼接的情况&#xff0c;和大家分享一下。 有如下表student&#xff1a; 我们希望以class分组&#xff0c;每组的信息平铺&#xff0c;效果如下 分组首先想到的肯定是group…

自求

最近在写代码的时候发现了一个问题&#xff0c;总是在完成一个复杂的逻辑后不自信&#xff0c;不自信逻辑没有问题或者说没有其他问题。仔细注意这种感觉是怎么来的就会发现&#xff0c;在梳理完逻辑写代码的时候总也会出现一些小问题&#xff0c;这些小问题的出现和处理就是问…

在Spring中使用Asciidoctor:使用Spring MVC渲染Asciidoc文档

Asciidoc是一种基于文本的文档格式&#xff0c;因此如果要将文档提交到版本控制系统中并跟踪不同版本之间的更改&#xff0c;它非常有用。 这使Asciidoc成为编写书籍&#xff0c;技术文档&#xff0c;常见问题解答或用户手册的理想工具。 创建Asciidoc文档后&#xff0c;很可能…

移动端meta整理

<!doctype html><html><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1" /><!-- 默认使用最新浏览器 --><meta http-equiv"Cache-Control" content&qu…

字符数组和字符串的小细节

目录 1. 背景知识2. 指向字符串的指针2.1 代码A2.2 代码B2.3 结论3. 字符数组3.1 代码C3.2 总结4. 拓展1. 背景知识 1、字符串就是一个地址。 2. 指向字符串的指针 2.1 代码A const char *a "unix"; char *b "hello";pritnf("%s \n", a); a b…

POJ1459-Power Network

转载请注明出处&#xff1a;優YoU http://user.qzone.qq.com/289065406/blog/1299339754 提示&#xff1a;BFS找增广链 压入重标法 解题思路&#xff1a;多源多汇最大流问题题目给出很多都是废话&#xff0c;特别是符号s(u)&#xff0c;d(u)&#xff0c;Con还有那条公式都别管…

http强缓存在firefox和chrome之间的差异

最近回顾HTTP缓存知识的时候发现了一个问题&#xff0c;设置了强缓存和协商缓存的文件&#xff0c;点击浏览器的刷新按钮的时候在chrome和firefox中的表现不一样。具体表现为chrome走强缓存没有再次发起请求。firefox却在强缓存没有失效的情况下发了请求&#xff0c;返回了304走…

垃圾收集器–串行,并行,CMS,G1(以及Java 8中的新增功能)

4个Java垃圾收集器–错误的选择如何严重影响性能 在2014年&#xff0c;对于大多数开发人员来说&#xff0c;还有两件事仍然是个谜&#xff1a;垃圾收集和了解异性。 由于我对后者知之甚少&#xff0c;所以我认为我会对前者大吃一惊&#xff0c;特别是因为在该领域中&#xff0c…

基于webpack的react脚手架

一、前言&#xff1a;react的cli开发模式太过于简单&#xff0c;好多东西都要自己配置 二、这里有个简单的配置&#xff0c;可以直接上手开发(不熟悉webpack和npm的绕路)&#xff0c;已经完成的配置如下 1&#xff1a;默认ejs模板 2&#xff1a;编译less、scss 3&#xff1…

从数学到密码学(八)

数学基础&#xff08;三&#xff09; 从本节起&#xff0c;我们开始进入大学数学的领域&#xff0d;&#xff0d;近世代数&#xff08;也称抽象代数&#xff09;。 先给出几个基本概念/定义。 [代数运算]&#xff1a;对于集合A的任意元素a、b&#xff0c;如果按某一运算法则&am…

Oracle.ManagedDataAccess 连接数据库用户名密码错误

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy] “Enabled” dword&#xff1a;00000000 转载于:https://www.cnblogs.com/Elcser/p/11134100.html

IE9下apply的使用方式

起初看到这段代码的时候先不管在干啥&#xff0c;仅仅是尝试理解就发现很绕&#xff0c;现记下以便回顾。 Function.prototype.apply.call(console.error, console, args);其实主要做的事情就是console.error(array)&#xff0c;使用数组作为参数调用console.error。 分解&am…

不要错过使用jOOλ或jOOQ编写Java 8 SQL单行代码的机会

越来越多的人通过为他们的业务采用功能性编程来赶上我们平台的最新更新。 在Data Geekery &#xff0c;我们将Java 8用于jOOQ集成测试&#xff0c;因为将新的Streams API与lambda表达式一起使用使生成临时测试数据变得非常容易。 但是&#xff0c; 我们并不认为JDK提供了尽可…

Redis---概述

1.概述 Redis是速度非常快的非关系型&#xff08;NoSQL&#xff09;内存键值数据库&#xff0c;可以存储键和五种不同类型的值之间的映射。 键的类型只能为字符串&#xff0c;值支持五种数据类型&#xff1a;字符串&#xff0c;列表&#xff0c;集合&#xff0c;散列表&#xf…

AJAX Control Toolkit——DropShadow(阴影和圆角框)

该控件的效果就是可以使相应的Panel产生阴影和圆角框的效果&#xff0c;要说的是该控件在CSS3来临之际并不存在多大的意义了&#xff0c;因为在CSS3中同样可以实现而且更加理想的效果。 但是要说明的是不要为目标Panel添加过多的CSS属性&#xff0c;不然会出现预料之外的效果&a…

node实现简单的群体聊天工具

一、使用的node模块 1、express当做服务器 2、socket.io 前后通信的桥梁 3、opn默认打开浏览器的模块(本质上用不到) 难点&#xff1a;前后通信 源码地址&#xff1a;https://github.com/wjf444128852/SimpleChat 欢迎clone并运行、扩展改进、issues 二、基础样子&#…

CSS中的三种样式来源:创作人员、读者和用户代理

查看原文&#xff1a;https://www.cnblogs.com/JJJJJKKKKK/articles/4542545.html CSS中的样式一共有三种来源&#xff1a;创作人员、读者和用户代理&#xff0c;来源的不同会影响到样式的层叠方式&#xff0c;很多第一次学习CSS的朋友&#xff0c;对这三种来源可能会存在一些…

具有jOOQ和Java 8的CompletableFuture的异步SQL执行

响应式编程是一个新的流行词&#xff0c;它实际上仅表示异步编程或消息传递。 事实是&#xff0c;函数语法极大地帮助构建了异步执行链&#xff0c;今天&#xff0c;我们将看到如何使用jOOQ和新的CompletableFuture API在Java 8中做到这一点。 实际上&#xff0c;事情很简单&…

关于模板引擎handlebars.js基本用法

说明&#xff1a;模板引擎主要针对于渲染DOM&#xff0c;取代了字符串拼接&#xff0c;用下面的代码亲测handlebars模板引擎比字符串拼接渲染DOM慢了20ms&#xff0c; 这里配置一个在线DEMO&#xff0c;简单说明下handlebars.js的基本用法&#xff0c;需要根据获取的数据去渲染…

create react app创建的项目运行test的时候不能解析webpack的alisa配置的问题

使用babel插件npm install babel-plugin-module-resolver&#xff0c;并在.babelrc文件中加入如下&#xff1a; {"plugins": [["module-resolver",{"alias": {"": "./src"}}]] }详情查看babel-plugin-module-resolver插件文…