树结构练习——判断给定森林中有多少棵树(简单做法)

树结构练习——判断给定森林中有多少棵树

Time Limit: 1000MS Memory limit: 65536K

题目描述

众人皆知,在编程领域中,C++是一门非常重要的语言,不仅仅因为其强大的功能,还 因为它是很多其他面向对象语言的祖先和典范。不过这世上几乎没什么东西是完美的,C++也不例外,多继承结构在带来强大功能的同时也给软件设计和维护带来 了很多困难。为此,在java语言中,只允许单继承结构,并采用接口来模拟多继承。KK最近获得了一份java编写的迷你游戏的源代码,他对这份代码非常 感兴趣。这份java代码是由n个类组成的(本题不考虑接口),现在,他想要知道这份代码中有多少个类没有直接基类。n个类分别用数字1..n表示。

输入

输入数据包含多组,每组数据格式如下。

第一行包含两个整数n,m,表示该份代码中的n个类和m个单继承关系。

后面m行,每行两个整数a b,表示a是b的直接基类。

输出

对于每组输入,输出该组数据中有多少个类没有直接基类。每组输出占一行。

示例输入

2 1
1 2
2 0

示例输出

1
2
#include<stdio.h>
#include<string.h>
int n, m, i;
int s[100000];
void init()
{
    int i;
    for(i=1; i<=n; i++)
        s[i] = i;
}
int main()
{

    int cnt;
    while(~scanf("%d%d", &n, &m))
    {
        int a, b;
        init();
        cnt = 0;
        for(i=0; i<m; i++){
            scanf("%d%d", &a, &b);
            s[b] = a;
        }
        for(i=1; i<=n; i++)
        {
            if(s[i]==i)
                cnt++;
        }
        printf("%d\n", cnt);
    }
    return 0;

}
时间: 2024-11-05 21:52:14

树结构练习——判断给定森林中有多少棵树(简单做法)的相关文章

数据结构之二叉树 树结构练习---判断给定森林中有多少棵树

树结构练习——判断给定森林中有多少棵树 Time Limit: 1000MS Memory limit: 65536K 题目描述 众人皆知,在编程领域中,C++是一门非常重要的语言,不仅仅因为其强大的功能,还 因为它是很多其他面向对象语言的祖先和典范.不过这世上几乎没什么东西是完美的,C++也不例外,多继承结构在带来强大功能的同时也给软件设计和维护带来 了很多困难.为此,在java语言中,只允许单继承结构,并采用接口来模拟多继承.KK最近获得了一份java编写的迷你游戏的源代码,他对这份代码非常

编写程序,判断给定的某个年份是否是闰年。

编写程序,判断给定的某个年份是否是闰年.       闰年的判断规则如下: (1)若某个年份能被4整除但不能被100整除,则是闰年.        (2)若某个年份能被400整除,则也是闰年.解答: import java.util.*; public class Bissextile{ public static void main(String[]arge){ System.out.println("please input the nian:"); int year; Scann

图结构练习——判断给定图是否存在合法拓扑序列

图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000MS Memory limit: 65536K 题目描述 给定一个有向图,判断该有向图是否存在一个合法的拓扑序列. 输入 输入包含多组,每组格式如下. 第一行包含两个整数n,m,分别代表该有向图的顶点数和边数.(n<=10) 后面m行每行两个整数a b,表示从a到b有一条有向边. 输出 若给定有向图存在合法拓扑序列,则输出YES:否则输出NO. 示例输入 1 0 2 2 1 2 2 1 示例输出 YES NO #inc

图结构练习——判断给定图是否存在合法拓扑序列(sdutoj)

#include<stdio.h>#include<string.h>int d[15],map[15][15],vis[15];int main(){    int i,j,k,f,n,m,u,v;    while(~scanf("%d%d",&n,&m))    {        memset(d,0,sizeof(d));        memset(map,0,sizeof(map));        memset(vis,0,size

delphi 判断给定日期的天数,给定日期距离月初的天数,给定日期距离月末的天数

uses dateutils; //判断给定日期的天数 label1.caption := inttostr(DaysInAMonth(yearof(StrToDate(Trim(Edit_riqi.Text))),monthof(StrToDate(Trim(Edit_riqi.Text))) )); //给定日期距离月初的天数 label2.caption := inttostr(dayof(StrToDate(Trim(Edit_riqi.Text)) )-1); //给定日期距离月末的天

判断一棵二叉树是否为BST,一棵树是否为完全二叉树

对于一颗搜索二叉树,最简单的方法就是用中序遍历,看是不是一个递增数列,如果是则是一颗搜索二叉树,如果不是则不是搜索二叉树.在这里用一个lastVisit去记录上一次搜索到的节点.整个过程就是先找到最左下角的节点,更新这个lastVisit为这个节点的值,然后按照中序遍历依次更新即可.代码如下. 1 #include <stdio.h> 2 #include <climits> 3 4 //二叉树结点 5 typedef struct binary_tree_node_t{ 6 bi

【LeetCode】Symmetric Tree 判断一棵树是否是镜像的

题目:Symmetric Tree <span style="font-size:18px;">/**LeetCode Symmetric Tree 对称的树 * 思路:判断一棵树是否对称,1.有左子树就要有右子树 * 2.除根节点外对称节点值要相同 * 注意:对称后就是左子树的左节点和右子树的右节点比较 * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; *

小希的迷宫(MST单棵树判断法则)

小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 27851    Accepted Submission(s): 8613 Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双

判断一棵树是否是另一棵树的子树

问题 判断一棵树是否是另一棵树的子树,如图 思路 问题分两步: 找值相同的根结点(遍历解决) 判断两结点是否包含(递归:值.左孩子.右孩子分别相同) 代码 bool IsPart(TreeNode *root1, TreeNode *root2) { if (root2 == NULL) return true; if (root1 == NULL) return false; if (root1->val != root2->val) return false; return IsPart(