日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

解题报告 树形图计数

發(fā)布時(shí)間:2023/12/9 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解题报告 树形图计数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.????????題目

樹(shù)形圖計(jì)數(shù)

count.pas/c/cpp

?

【問(wèn)題描述】

k同學(xué)最近正在研究最小樹(shù)形圖問(wèn)題。所謂樹(shù)形圖,是指有向圖的一棵有根的生成樹(shù),其中樹(shù)的每一條邊的指向恰好都是從根指向葉結(jié)點(diǎn)的方向?,F(xiàn)在小k在紙上畫(huà)了一個(gè)圖,他想讓你幫忙數(shù)一下這個(gè)圖有多少棵樹(shù)形圖。

?

【輸入格式】

1行輸入1個(gè)正整數(shù):n,表示圖中點(diǎn)的個(gè)數(shù)

2~n+1行每行輸入n個(gè)字符,描述了這個(gè)圖的鄰接矩陣。第i+1行第j個(gè)字符如果是0則表示沒(méi)有從i連向j的有向邊,1表示有一條從ij的有向邊。

?

【輸出格式】

輸出11個(gè)整數(shù),表示這個(gè)有向圖的樹(shù)形圖個(gè)數(shù)。

?

【樣例輸入】

count.in

4

0100

0010

0001

1000

?

【樣例輸出】

count.out

4

?

【數(shù)據(jù)規(guī)模和約定】

對(duì)于100%的數(shù)據(jù),n<=8?.

2.????????算法

以每一個(gè)節(jié)點(diǎn)為根,判斷從這個(gè)根開(kāi)始用有向邊能不能找到所有節(jié)點(diǎn),如果能則記錄。

?

判斷方法:首先將這棵樹(shù)構(gòu)建出來(lái),也就是輪流將該點(diǎn)的入度所連的點(diǎn)作為他的父親節(jié)點(diǎn),看可不可以將這棵樹(shù)構(gòu)建出來(lái),如果可以,再看構(gòu)建出來(lái)的樹(shù)能不能找到所有節(jié)點(diǎn)。

3.????????注意事項(xiàng)

要先將這棵樹(shù)構(gòu)建出來(lái),再判斷。

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.

?

轉(zhuǎn)載于:https://www.cnblogs.com/SueMiller/archive/2011/10/15/2213100.html

總結(jié)

以上是生活随笔為你收集整理的解题报告 树形图计数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。