解题报告 树形图计数

1.        题目

树形图计数

count.pas/c/cpp

 

【问题描述】

k同学最近正在研究最小树形图问题。所谓树形图,是指有向图的一棵有根的生成树,其中树的每一条边的指向恰好都是从根指向叶结点的方向。现在小k在纸上画了一个图,他想让你帮忙数一下这个图有多少棵树形图。

 

【输入格式】

1行输入1个正整数:n,表示图中点的个数

2~n+1行每行输入n个字符,描述了这个图的邻接矩阵。第i+1行第j个字符如果是0则表示没有从i连向j的有向边,1表示有一条从ij的有向边。

 

【输出格式】

输出11个整数,表示这个有向图的树形图个数。

 

【样例输入】

count.in

4

0100

0010

0001

1000

 

【样例输出】

count.out

4

 

【数据规模和约定】

对于100%的数据,n<=8 .

2.        算法

以每一个节点为根,判断从这个根开始用有向边能不能找到所有节点,如果能则记录。

 

判断方法:首先将这棵树构建出来,也就是轮流将该点的入度所连的点作为他的父亲节点,看可不可以将这棵树构建出来,如果可以,再看构建出来的树能不能找到所有节点。

3.        注意事项

要先将这棵树构建出来,再判断。

4.        代码

深搜+判断(ASDF)

program asdf;

  var

    b,a:array[0..10,0..10]of longint;

    f,ff:array[0..10]of boolean;

    fa:array[0..10]of longint;

    n,i,j,k,root:longint;

    all,sum,ans:qword;

    flag:boolean;

    ch:char;

  function judge:boolean;

    var

      i,x:longint;

    begin

      fillchar(f,sizeof(f),false);

      f[root]:=true;

      for i:=1 to n do

        begin

          fillchar(ff,sizeof(ff),false);

          x:=fa[i];

          while (fa[x]<>root)and(not f[fa[x]])and(fa[x]<>0) do

            begin

              if ff[x] then exit(false);

              ff[x]:=true;

              x:=fa[x];

            end;

          if fa[x]=0 then exit(false);

          if (fa[x]=root)or(f[fa[x]]) then

            begin

              x:=i;

              while not f[x] do

                begin

                  f[x]:=true;

                  x:=fa[x];

                end;

            end;

        end;

      exit(true);

    end;

  procedure dfs(x:longint);

    var

      i:longint;

    begin

      if x=root then

        begin

          dfs(x+1);

          exit;

        end;

      if x=n+1 then

        begin

          if judge then inc(ans);

          exit;

        end;

      for i:=1 to n do

        if b[i,x]<>0 then

          begin

            fa[x]:=i;

            dfs(x+1);

          end;

    end;

  begin

    assign(input,'count.in');reset(input);

    assign(output,'count.out');rewrite(output);

    readln(n);

    for i:=1 to n do

      begin

        for j:=1 to n do

          begin

            read(ch);

            if ch='1' then b[i,j]:=1

            else b[i,j]:=0;

          end;

        readln;

      end;

    for root:=1 to n do

      begin

        flag:=false;

        for i:=1 to n do

          if b[root,i]<>0 then

            begin

              flag:=true;

              break;

            end;

        fa[root]:=root;

        if flag then

          dfs(1);

      end;

    write(ans);

    close(input);

    close(output); 

  end.

 

转载于:https://www.cnblogs.com/SueMiller/archive/2011/10/15/2213100.html

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

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

相关文章

怎么部署_2020怎么部署新零售商城?

移动电子商务的发展壮大&#xff0c;5g网络技术的扶持&#xff0c;新零售概念时代推动店家完成零售转型&#xff0c;网上零售商城&#xff0c;再加上线下与推广线下的玩法&#xff0c;带来了效率和效益的提升。一&#xff0c;运用社交媒介&#xff0c;大力发展新零售概念下的销…

ARM立即数讲解--LDR和MOV的区别 .

Mov 是把立即数赋给一个寄存器&#xff0c;但对立即数的范围有要求。只能是由8bit连续有效位通过偶数次移位能得到的数。如果立即数超出这个范围&#xff0c;就没办法用一条MOV指令给寄存器赋值。LDR除了普通的读数之外&#xff0c;也有给寄存器赋立即数的功能。你只要写 LDR R…

python self 值自动改变,在python中对self的理解

在python中对self的理解 &#xff1a;一、self的位置是出现在哪里&#xff1f;首先&#xff0c;self是在类的方法中的&#xff0c;在调用此方法时&#xff0c;不用给self赋值&#xff0c;Python会自动给他赋值&#xff0c;而且这个值就是类的实例--对象本身。也可以将self换成别…

各种震撼的慢镜头,奇怪的知识又增加了!​

全世界只有3.14 % 的人关注了爆炸吧知识慢镜头&#xff08;高速摄影&#xff09;可能是现代最伟大的发明之一。从身边的日常到那些比较罕见的事物&#xff0c;慢镜头下看起来都比平时更酷&#xff01;喵星人接球这行云流水的动作&#xff0c;秒杀国足&#xff01;这是用多台风扇…

Dapr牵手.NET学习笔记:跨物理机负载均衡服务调用

dpar在同一台电脑上不能run 相同appid&#xff0c;这个在上篇说过&#xff0c;所以就用外部负载均衡nginx来对应&#xff0c;那在不同的host中跑同一服务&#xff0c;看看dapr内部的负载均衡是怎么实现的。说说现有的服务&#xff0c;两个服务&#xff0c;订单服务&#xff0c;…

电脑编程教学_2020太原数控车床电脑编程一对一实操教学不限学时

2020太原数控车床电脑编程一对一实操教学不限学时石家庄工之艺数培训学校培训‘数控技术员’ 学生时&#xff0c;拿到图纸和毛坯,能够自己的在数控机床上做出成品。实行教学&#xff0c;“小班授课&#xff0c;一对一的教&#xff0c;理论实践相结合&#xff0c;随到随学&#…

多功能复合机基于用户认证功能的实现过程详解

多功能复合机基于用户认证功能的实现方法 -----网络设备共享案例分析 公司需求&#xff1a;***是一家租售写字楼的服务性企业&#xff0c;主要是针对小型企业进行出租&#xff0c;房间有大有小&#xff0c;大的可以容纳5-10人&#xff0c;小的可以容纳1-4人左右。由于都是一些小…

商女不知亡国恨,一天到晚敲代码

满园春色关不住 一串代码飘出来。日照屏幕直冒烟, 遥看代码挂前川。春眠不觉晓&#xff0c;处处敲代码。春宵一刻值千金&#xff0c;完事起来敲代码。洛阳亲友如相问&#xff0c;就说我在敲代码。夜阑卧听风吹雨&#xff0c;做梦还在敲代码。举头望明月&#xff0c;低头敲代码。…

用python写简单爬虫,用Python写简单的爬虫

准备&#xff1a;1.扒网页&#xff0c;根据URL来获取网页信息importurllib.parseimporturllib.requestresponse urllib.request.urlopen("https://www.cnblogs.com")print(response.read())urlopen方法urlopen(url, data, timeout)url即为URL&#xff0c;data是访问U…

换种方式去分页(转)

为什么要换种方式分页&#xff0c;一个字&#xff1a;太慢了 分页要传入的参数&#xff0c;1&#xff1a;页号&#xff0c;2&#xff1a;行数 分页要取到的数据&#xff0c; 1&#xff1a;总行数&#xff0c;2&#xff1a;单页数据 http://www.cnblogs.com/mikedeng/p/be…

单元测试(二)基本使用争议篇

介绍常用的单元测试是测试方法、API等&#xff0c;下面我们来演示一下Xunit测试框架的简单使用&#xff0c;有些是为了演示而写的单元测试。最下面有反转&#xff0c;一定要看到最后操作创建单元测试项目本次文章还在原来项目的基础上进行操作&#xff0c;右键解决方案添加单元…

听说你趁我不在家,欺负我老婆?

1 听说你趁我不在家欺负我老婆了&#xff1f;▼2 当男生们聚在一起时他们都会做什么&#xff1f;▼3 其实我是广西人&#xff0c;每顿要嗦1吨粉▼4 山西人的饮水机里放的都是醋&#xff1f;▼5 可现实中又有几个总裁没有啤酒肚呢&#xff1f;▼6 开学考试&#xff0c;一考…

热像仪 二次开发 c++_一种全新的红外热像仪——“可编程红外热像仪”

如 今&#xff0c;红外热像仪对于很多人而言已经不是一个新鲜事物了&#xff0c;它利用红外探测器对被测目标的红外辐射进行探测&#xff0c;并加以光电转换和信号处理等手段&#xff0c;将被测目标的温度分布转换为我们人眼可以直观识别的图像。受益于这种温度可见的技术&…

RHEL5.3下MRTG+SNMP的搭建

一、MRTG的简介 Mrtg(Multi Router Traffic Grapher,MRTG)是一个监控网络链路流量负载的工具软件&#xff0c;它通过snmp协议从设备得到设备的流量信息&#xff0c;并将流量负载以包含PNG格式的图形的HTML文档方式显示给用户&#xff0c;以非常直观的形式显示流量负载(可以在网…

SQL Express自动备份

--第一步 --在master库中建立一个备份数据库的存储过程. USE master GO CREATE PROC p db_name sysname, --数据库名 bk_path NVARCHAR(1024) --备份文件的路径 AS IF ISNULL(db_name,) SET db_namedb_name() ; DECLARE dt VARCHAR(50) ; SET dtdb_name_CONVERT(V…

php server 连接字符串,sqlServer 数据库常用连接字符串

sqlServer 数据库常用连接字符串 用户名和密码验证的方式去连接到数据库服务器 add name"conStr" connectionString"Data Source服务器名;Initial Catalog数据库名; User Id用户名;Password密码"/ add name"conStr" connectionString"Serve…

linux下ip命令用法

配置数据转发&#xff0c;可以通过 1、路由转发即用用路由器实现&#xff1b; 2、使用NAT转发&#xff1b; 简单的说&#xff1a; 路由表内的信息只是指定数据包在路由器内的下一个去处。并不能改变数据包本身的地址信息。即它只是“换条路而已&#xff0c;目的地不变”&#x…

BeetleX.WebFamily之Markdown编辑器

组件的新版集成一款Markdown编辑器ToastUIEditor&#xff0c;通过它可以快速地构建编写Markdown文本内容功能。集成后的ToastUIEditor支持图表&#xff0c;表格&#xff0c;文件管理插入等功能。新建一个控制台项目&#xff0c;通过Nuget引用组件后编写以下代码class Program {…

如何逃离「信息茧房」?

全世界只有3.14 % 的人关注了爆炸吧知识智能算法、内容推荐&#xff0c;当我们滑动屏幕的时候&#xff0c;映入眼帘的总是我们想看的内容。不过&#xff0c;这样的内容选择或许会让我们陷入「信息茧房」&#xff1a;只注意自己选择的、让自己愉悦的资讯&#xff0c;久而久之和蚕…

python为何排名越来越前_为何python现在越来越多的人在用了?

曾几何时&#xff0c;python这门语言我并没有听过&#xff0c;那个时候只知道C&#xff0c;后来学了C&#xff0c;用了C Builder和VS&#xff0c;再后来学了C#的皮毛&#xff0c;继之是Lua&#xff0c;觉得差不多了。但是最近买了本python的书之后&#xff0c;觉得python处理问…