日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

游历魔法王国(牛客网 网易2018校招题 图论)

發布時間:2024/3/26 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 游历魔法王国(牛客网 网易2018校招题 图论) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://www.nowcoder.com/questionTerminal/f58859adc39f4edc9cd8e40ba4160339
來源:牛客網

魔法王國一共有n個城市,編號為0~n-1號,n個城市之間的道路連接起來恰好構成一棵樹。
小易現在在0號城市,每次行動小易會從當前所在的城市走到與其相鄰的一個城市,小易最多能行動L次。
如果小易到達過某個城市就視為小易游歷過這個城市了,小易現在要制定好的旅游計劃使他能游歷最多的城市,請你幫他計算一下他最多能游歷過多少個城市(注意0號城市已經游歷了,游歷過的城市不重復計算)。

輸入描述:

輸入包括兩行,第一行包括兩個正整數n(2 ≤ n ≤ 50)和L(1 ≤ L ≤ 100),表示城市個數和小易能行動的次數。 第二行包括n-1個整數parent[i](0 ≤ parent[i] ≤ i), 對于每個合法的i(0 ≤ i ≤ n - 2),在(i+1)號城市和parent[i]間有一條道路連接。


?

輸出描述:

輸出一個整數,表示小易最多能游歷的城市數量。

示例1

輸入

5 2 0 1 2 3

輸出

3

ps:

昨天測試了下網易的校招題,最后還剩半個小時的時候一共做出了5道題。。后面3題有些難沒啥思路就沒做了,交上去試試居然能排到百分之7,好吧以前搞acm還是有一點底子的(自豪233),今天打算把剩下3題補完,有兩題還比較有意思就寫一篇博客記錄下解題思路。。

思路:

這題一開始想用直接用dfs模擬來做,但是題目說明是可以回退的,這樣回退以后步數算起來就無從下手了,但是仔細分析以后其實這題不難,想要走過的城市最多,那么肯定是先往最長的也就是不用回退的那條路去走,這個時候就要分好幾種情況了,一種是題目給的步數小于最長的那條路的長度,那么直接輸出題目給的步數+1就是答案了(因為包括第0個節點),如果步數大于最長的那條路的長度,那么也要分情況,一種是可以走完所有節點,步數還有剩余的情況,那么肯定答案就是所有節點的個數了,如果可以走完最長的路但是不能走完所有節點,那么答案就應該是最長那條路的長度+1+(走完最長路剩余步數)/2了,因為如果要走最長路以外的路,一來一回,消耗是2倍,所以可以這么計算,至于最長路的求法,可以用dp,但是這題數據那么小我直接就dfs求了。

代碼:

#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> using namespace std; int maxx; int vis[55]; int nums[55]; int p[55][55]; void dfs(int index,int step) {if(step>maxx)maxx=step;int i;for(i=0;i<nums[index];i++){if(!vis[p[index][i]]){vis[p[index][i]]=1;dfs(p[index][i],step+1);vis[p[index][i]]=0;}} } int main() {memset(nums,0,sizeof(nums));memset(vis,0,sizeof(vis));int n,x;scanf("%d%d",&n,&x);maxx=1;for(int i=1;i<n;i++){int t;scanf("%d",&t);p[t][nums[t]]=i;p[i][nums[i]]=t;nums[t]++;nums[i]++;}vis[0]=1;dfs(0,0);if(maxx>=x)printf("%d\n",min(maxx+1,x+1));else{printf("%d\n",min(maxx+1+(x-maxx)/2,n));}return 0; }

?

總結

以上是生活随笔為你收集整理的游历魔法王国(牛客网 网易2018校招题 图论)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。