我的做法是紀錄每個點的父節點,只要把input的邏輯反過來就好,這樣就可以得到父節點
詳細實做的話會推薦有vector,這樣方便很多
struct node{
vector<int> from;
unsigned long long value;
};
node city[100000]
然後透過遞迴來進行運算,就很像是高一學的計算所有到達終點方法數那樣加就好
至於要如何遞迴,我是覺得很像是DP中的一個經典例子-費氏數列。
int re(int want){ if(want==1){ return 1; } for(int i=0;i<city[want].from.size();i++){ if(city[city[want].from[i]].value==0){ city[want].value+=re(city[want].from[i]); } else{ city[want].value+=city[city[want].from[i]].value; } city[want].value %= 1234567 ; } return city[want].value ; }