註冊
登錄
論壇
搜索
幫助
導航
私人消息 (0)
公共消息 (0)
系統消息 (0)
好友消息 (0)
帖子消息 (0)
種子論壇 | 高雄市資訊培育協會學員討論區
»
快樂 C++ (週六13:30-15:30) 3F
» [作業繳交] 2025/03/15
返回列表
發帖
發短消息
加為好友
黃暐鈞
當前離線
UID
69255
帖子
272
精華
0
積分
0
閱讀權限
10
在線時間
43 小時
註冊時間
2024-1-22
最後登錄
2025-3-29
新手上路
1
#
跳轉到
»
黃暐鈞
發表於 2025-3-15 14:01
|
顯示全部帖子
本帖最後由 黃暐鈞 於 2025-3-22 15:10 編輯
APCS 實作題 10503 - 4
#include<bits/stdc++.h>
using namespace std;
int n;//人數
int root;//根節點
int res;
int finalMaxChildDis;
struct Node
{
int parent=-1,h=0;
int maxChildDis=0,max=-1,sec=-1;
vector<int> child;
};
int main()
{
cin>>n;
int finalMaxChildDis=-1;
Node node[n];//node資料庫_共n人
for(int i=0;i<n-1;i++)//n個人有n-1個連結
{
int p;//父節點
int c;//子節點
cin>>p>>c;
node[c].parent=p;//c屬於b->p屬於node[c].parent
node[p].child.push_back(c);//一個父節點可以同時有很多子節點->用vector存
}//建立關係
for(int i=0;i<n;i++)//n次
{
if(node[i].parent==-1)//該節點沒有設定父節點->最高->根節點
{
root=i;
}
if(node[i].child.size()==0)//確認該節點的子節點數量:為0->最底部
{
int h=0;
int parent=node[i].parent;//額外定義 不影響node資料
while(parent!=-1)//有父節點
{
h++;
if(h>node[parent].h)
{
node[parent].h=h;//找最深
}
else
{
break;
}
parent=node[parent].parent;//繼續往上找
}
}
}
for(int i=0;i<n;i++)//n次
{
if(node[i].child.size()>=2)//子節點數量>=2
{
for(int j=0;j<node[i].child.size();j++)//重複'子節點數量'次
{
int childH=node[node[i].child[j]].h;//取出子節點的深度
if(childH>node[i].max)//找最深
{
node[i].sec=node[i].max;//找第二深(可能介於兩個最大之間)
node[i].max=childH;
}
else if(childH>node[i].sec)//介於兩個最大之間->更新第二大
{
node[i].sec=childH;
}
}
node[i].maxChildDis=node[i].max+node[i].sec+2;//計算總距離
if(node[i].maxChildDis>finalMaxChildDis)//比較並更新
{
finalMaxChildDis=node[i].maxChildDis;
}
}
}
if(node[root].h>finalMaxChildDis)//根節點距離最遠 不用找另外的子節點距離and+2
{
res=node[root].h;
}
else
{
res=finalMaxChildDis;
}
cout<<res;
}
/*
8
0 1
0 2
0 3
7 0
1 4
1 5
3 6
*/
/*
4
0 1
0 2
2 3
*/
複製代碼
APCS 觀念題:10510 - 12、13
12.(A)
13.(C)
TOP
返回列表
快樂 C++11207週六10
程式解題我最行 (週六15:30-17:30) 3F
114年Python證照特訓
快樂 C++ (週六13:30-15:30) 3F
Android手機程式開發班
Python證照特訓營(113)
Scratch冬令營(113-114)
113年國三專班
快樂學 Scratch
Python研習營(113-114)
快樂 C++11208週六19:00
113年APCS夏令營(一)(二)
C++證照
程式解題我最行 (週六10:00-12:00) 3F
快樂 C++11307週五19:00
快樂 C++ (家教)
113Scratch夏令營
113年程式夏令營(一)(二)
快樂C++11309週六13:30-15:30
google橫幅
谷哥人營隊
Python研習營(113-114)
114年Python證照特訓
114年谷哥人程式體驗營
114年APCS冬令營
113Scratch夏令營
Scratch冬令營(113-114)
113年國三專班
Python證照特訓營(113)
113年程式夏令營(一)(二)
113年APCS夏令營(一)(二)
C語言 / C++ (特別輔導)
C++證照
C#
家教/特輔
C語言特輔/證照(家教)
C++證照
C#
HTML5+CSS+JavaScript+PHP+MySQL
Java 家教 (王捷恩)
TQC+資料結構
快樂學 Scratch
Python 家教 (王捷恩 康恒睿)
Python 特別輔導 (家教)
快樂 C++ (家教)
iKnow
我愛 Java (家教)
程式解題我最行 (家教)
程式常態班
C++ 新生挑戰區
考照心得分享
快樂 C++11307週五19:00
快樂C++11309週六13:30-15:30
快樂 C++11403週六1000
快樂 C++11303 (週六15:40-17:40) 3F
程式解題我最行 (週六15:30-17:30) 3F
快樂 C++ (週六13:30-15:30) 3F
快樂 C++ (週六19:00-21:00) 3F
程式解題我最行 (週六10:00-12:00) 3F
快樂學 Scratch
程式解題我最行(週五19:00-21:00)
快樂 C++ (週六13:30-15:30) 3F
程式解題我最行(週三19:15-21:15)
快樂 C++11207週六10
快樂 C++11208週六19:00
程式解題我最行 (週六19:00-21:00) 3F
程式解題我最行 (週四19:10-21:10)
產投職訓
結訓課程 (產投職訓)
Php & MySQL old
Illustrator old
Dreamweaver old
Android手機程式開發班
PHP & MySQL電子商務互動式網站實作班 (102下)
PHP & MySQL (102上)
PHP & MySQL電子商務互動式網站實作班
Photoshop數位影像設計初階
Flash創意廣告動畫初階
行銷短片視訊剪輯
數位商業攝影實務班
PHP & MySQL電子商務系統開發實務初階班
電子商務系統開發實務中階班
Server基礎架設&動態網頁設計初階班
Java視窗應用程式設計與遊戲開發班
Illustrator時尚插畫創作設計初階班
102上Php & MySQL 初階班
電子商務互動式網站實作中階
Dreamweaver多媒體網頁設計
Android手機程式開發班(2012年10月)
PHP & MySQL (2012年10月)
創意塗鴉
yahoo橫幅
google橫幅
市民學苑
第二屆樂活部落格
第一屆電腦設備簡易維護和故障排除班
專案訓練
電子商務創業班
TQC PHP認證
投資理財班
領隊導遊班
電腦基礎及網路應用身心障礙專班
應用軟體網頁化開發
[收藏此主題]
[關注此主題的新回復]
[通過 QQ、MSN 分享給朋友]