zoukankan      html  css  js  c++  java
  • SDUT 2129 树结构练习——判断给定森林中有多少棵树

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

    Time Limit: 1000MS Memory Limit: 65536KB

    Problem Description

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

    Input

     输入数据包含多组,每组数据格式如下。
    第一行包含两个整数n,m,表示该份代码中的n个类和m个单继承关系。
    后面m行,每行两个整数a b,表示a是b的直接基类。

    Output

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

    Example Input

    2 1
    1 2
    2 0

    Example Output

    1
    2

    DQE:

    水水水题,化繁为简,排除法做soeasy,数组尺寸适当大一些。

     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 
     5 #define MVN 1010        //数组尺寸太小会R T E
     6 
     7 typedef struct VType
     8 {
     9     int x;
    10     int id;
    11     char *info;
    12 }VT;
    13 
    14 typedef struct GraphType
    15 {
    16     VT vex[MVN];
    17     int ZERO_v;    //假设开始全为树,后排除,计数用
    18     int vexn,arcn;
    19 }GT;
    20 
    21 void creat(GT &G)
    22 {
    23     int i,j,k;
    24     G.ZERO_v=G.vexn;
    25     for(i=1;i<=G.vexn;i++)
    26         G.vex[i].id=0;
    27     for(k=1;k<=G.arcn;k++)
    28     {
    29         scanf("%d %d",&i,&j);
    30         if(G.vex[j].id==0||G.vex[i].id==0)    //注意此处i,j的入度有一个为0则减少一颗树--3 2--1->2--3->2
    31         {
    32             G.ZERO_v--;        //入度为零的顶点本为独立树,有基类则树少1
    33             G.vex[j].id++;
    34         }
    35     }
    36 }
    37 
    38 int main()
    39 {
    40     GT G;
    41     while(scanf("%d %d",&G.vexn,&G.arcn)!=EOF)
    42     {
    43         creat(G);
    44         printf("%d
    ",G.ZERO_v);
    45     }
    46     return 0;
    47 }
    48 
    49 /***************************************************
    50 User name: ***
    51 Result: Accepted
    52 Take time: 0ms
    53 Take Memory: 164KB
    54 Submit time: 2016-11-18 20:42:55
    55 ****************************************************/
  • 相关阅读:
    100722B
    6-排列
    5-分西瓜差最小(背包 || dfs)
    4-计算九位数以内各个位数字和为s的种类
    3-计算01串
    2-计算星期几(基姆拉尔森计算公式)
    1-作业题构成单调曲线的点数最多
    12-分苹果(递归)
    11-砝码分配(利用3进制)
    10-约瑟夫环的几种解法
  • 原文地址:https://www.cnblogs.com/Leroscox/p/6046304.html
Copyright © 2011-2022 走看看