NYOJ129 决策树 【并检查集合】

NYOJ129 决策树 【并检查集合】

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

树的判定

时间限制:
1000 ms  |  内存限制:
65535 KB
难度:
4

描写叙述

A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between nodes satisfying the following properties. 

There is exactly one node, called the root, to which no directed edges point. 
Every node except the root has exactly one edge pointing to it. 
There is a unique sequence of directed edges from the root to each node. 

For example, consider the illustrations below, in which nodes are represented by circles and edges are represented by lines with arrowheads. The first two of these are trees, but the last is not. 

NYOJ129 决策树 【并检查集合】

In this problem you will be given several descriptions of collections of nodes connected by directed edges. For each of these you are to determine if the collection satisfies the definition of a tree or not.

输入
The input will consist of a sequence of descriptions (test cases) followed by a pair of negative integers. Each test case will consist of a sequence of edge descriptions followed by a pair of zeroes Each edge description will consist of a pair of integers; the first integer identifies the node from which the edge begins, and the second integer identifies the node to which the edge is directed. Node numbers will always be greater than zero.

The number of test cases will not more than 20,and the number of the node will not exceed 10000.

The inputs will be ended by a pair of -1.

输出
For each test case display the line “Case k is a tree.” or the line “Case k is not a tree.”, where k corresponds to the test case number (they are sequentially numbered starting with 1).

例子输入
6 8  5 3  5 2  6 4 5 6  0 08 1  7 3  6 2  8 9  7 5 7 4  7 8  7 6  0 03 8  6 8  6 4 5 3  5 6  5 2  0 0-1 -1
例子输出
Case 1 is a tree.Case 2 is a tree.Case 3 is not a tree.
来源
POJ
上传者
张云聪

题意:推断一个有向图是否是树。

题解:假设一个图是树。那么必须满足下面情况: 

1、树的数量不能大于1。空树也是树。

2、节点入度数不能大于1;

3、不能成环,比方一棵树的叶子节点指向根节点就是非法的;

4、自环是非法的。

#include <stdio.h>
#include <string.h>

#define maxn 10010

int pre[maxn];
bool vis[maxn];

int unionFind(int k){
	int a = k, b;
	while(pre[k] != -1) k = pre[k];
	while(a != k){
		b = pre[a];
		pre[a] = k;
		a = b;
	}
	return k;
}

int main() {
	// freopen("stdin.txt", "r", stdin);
	memset(pre, -1, sizeof(pre));
	int u, v, cas = 1, ok = 1, count = 0;
	while(scanf("%d%d", &u, &v) != EOF) {
		if(u < 0) break;
		if(!(u | v)) {
			printf("Case %d ", cas++);
			if(count > 1) ok = 0;
			if(ok) printf("is a tree.\n");
			else printf("is not a tree.\n");
			memset(pre, -1, sizeof(pre));
			memset(vis, 0, sizeof(vis));
			count = 0; ok = 1; continue;
		}
		if(!ok) continue;

		if(!vis[u]) {
			vis[u] = 1; ++count;
		}
		if(!vis[v]) {
			vis[v] = 1; ++count;
		}
		if(pre[v] != -1 || u == v) {
			ok = 0; continue;
		}
		u = unionFind(u);
		if(u == v) {
			ok = 0; continue;
		}
		pre[v] = u; --count;
	}
	return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117745.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 微信中调用扫一扫最简便的方法 5行代码实现H5扫一扫 HTML5扫二维码最简便的办法

    微信中调用扫一扫最简便的方法 5行代码实现H5扫一扫 HTML5扫二维码最简便的办法调用方式1(推荐。用redirect_uri参数指定接收结果的页面,可以是自身url):<ahref=”https://www.996315.com/api/scan/?redirect_uri=你的网页完整url”>扫描</a>调用方式2(不推荐):<ahref=”https://www.996315.com/api/scan/”>扫描</a>调用方式3(用js调用。本质和方式1、2一样):<ahref=”javascr

  • 11条javascript知识

    1.局部变量和全局变量var操作符定义的变量将成为定义该变量作用域中的局部变量。这个局部变量会在函数退出后销毁。不同于其他语言,javaScript不存在块级作用域。全局变量就是window对象的属性

    2021年12月20日
  • 一致性Hash算法以及java实现「建议收藏」

    一致性Hash算法以及java实现「建议收藏」目前我们很多时候都是在做分布式系统,但是我们需把客户端的请求均匀的分布到N个服务器中,一般我们可以考虑通过Object的HashCodeHash%N,通过取余,将客户端的请求分布到不同的的服务端。但是在分布式集群中我们通常需要添加或删除服务器,所以通过取余是不行的。一致性Hash就是为了解决这个问题。  ConsistentHashing一致性Hash的原理  1、环型Hash空间…

  • sql server 清空表数据「建议收藏」

    sql server 清空表数据「建议收藏」truncatetable BirthdayReminderDetail   truncate表+表名

  • qt之模仿随机抽奖

    qt之模仿随机抽奖

  • java自适应网站成品源代码出售 h5网页推广展示型官网CMS系统源码

    java自适应网站成品源代码出售 h5网页推广展示型官网CMS系统源码QQ:464652874项目具体详情点击这企业门户网站系统源代码java响应式企业官网成品源码公司行业通用源代码web网站出售可二次开发源码项目介绍:企业门户网站系统能够通过互联网得到广泛的、全面的宣传,让尽可能多的企业了解和熟知企业门户网站系统的便捷高效,不仅为用户提供了服务,而且也推广了自己,让更多的用户了解自己。对于企业而言,若拥有自己的企业门户网站系统,通过企业门户网站系统让企业的宣传、营销提上一个新台阶,同时提升了企业形象。技术介绍:前端页面自适应,支持PC和H5手机端、平

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号